Haskell XMonad键函数是如何减少的?

Haskell XMonad键函数是如何减少的?,haskell,xmonad,Haskell,Xmonad,我试图理解如何评估XMonad配置函数。第一个示例来自Xmonad: 键的类型是一种功能: 键::!(XConfig布局->映射(按钮掩码,键符号)(X()) 这里的问题是评估顺序键在应用于某些XConfig时返回Map,然后我们得到的Map应该应用于c(如果我没有弄错的话),但是Map如何应用于某些东西呢?您的描述不太正确键是一个记录字段 如果记录类型R带有字段foo::T,则foo本身(用作值)具有类型R->T(它是一个记录访问器函数) 由于keys是XConfig的字段,因此其类型实际上是

我试图理解如何评估XMonad配置函数。第一个示例来自Xmonad:

键的类型是一种功能:
键::!(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
创建一个新的配置,并将其
函数替换为一个新的匿名函数。该函数接受一个配置,并对其应用两个函数:your
mikeys
,以及
keys defaultConfig
返回的任何函数。生成的两个
映射
被合并,并由配置的
函数返回


xmonad
然后使用此新配置,其中包括提取合并的
Map
来设置密钥绑定。

简单:您没有正确的
密钥类型。
谢谢,
数据XConfig
源代码让我完全明白;-)
keys :: XConfig l -> !(XConfig Layout -> Map (ButtonMask, KeySym) (X ()))
keys defaultConfig c