Haskell XMonad键函数是如何减少的?
我试图理解如何评估XMonad配置函数。第一个示例来自Xmonad: 键的类型是一种功能:Haskell XMonad键函数是如何减少的?,haskell,xmonad,Haskell,Xmonad,我试图理解如何评估XMonad配置函数。第一个示例来自Xmonad: 键的类型是一种功能: 键::!(XConfig布局->映射(按钮掩码,键符号)(X()) 这里的问题是评估顺序键在应用于某些XConfig时返回Map,然后我们得到的Map应该应用于c(如果我没有弄错的话),但是Map如何应用于某些东西呢?您的描述不太正确键是一个记录字段 如果记录类型R带有字段foo::T,则foo本身(用作值)具有类型R->T(它是一个记录访问器函数) 由于keys是XConfig的字段,因此其类型实际上是
键::!(XConfig布局->映射(按钮掩码,键符号)(X())
这里的问题是评估顺序<代码>键在应用于某些
XConfig
时返回Map,然后我们得到的Map应该应用于c
(如果我没有弄错的话),但是Map如何应用于某些东西呢?您的描述不太正确<代码>键是一个记录字段
如果记录类型R
带有字段foo::T
,则foo
本身(用作值)具有类型R->T
(它是一个记录访问器函数)
由于keys
是XConfig
的字段,因此其类型实际上是
keys :: XConfig l -> !(XConfig Layout -> Map (ButtonMask, KeySym) (X ()))
在
我们从
defaultConfig
中提取keys
字段。存储在该字段中的值本身就是一个函数,我们将其应用于c
,以获得Map
Map
不是一个函数;这是一个数据结构,它不适用于任何东西。相反,您正在基于defaultConfig
创建一个新的配置,并将其键
函数替换为一个新的匿名函数。该函数接受一个配置,并对其应用两个函数:yourmikeys
,以及keys defaultConfig
返回的任何函数。生成的两个映射
被合并,并由配置的键
函数返回
xmonad
然后使用此新配置,其中包括提取合并的Map
来设置密钥绑定。简单:您没有正确的密钥类型。谢谢,数据XConfig
源代码让我完全明白;-)
keys :: XConfig l -> !(XConfig Layout -> Map (ButtonMask, KeySym) (X ()))
keys defaultConfig c