繁体   English   中英

XMonad键功能如何降低?

[英]How does XMonad keys functions gets reduced?

我试图了解如何评估XMonad配置函数。 第一个例子来自Xmonad 文档

import qualified Data.Map as M
--

main = xmonad $ defaultConfig {
  --
  , keys          = \c -> mykeys c `M.union` keys defaultConfig c
  --
  }
where
    mykeys (XConfig {modMask = modm}) = M.fromList $
         [ ((modm , xK_x), spawn "xlock") ]

键的类型是一个函数: keys :: !(XConfig Layout -> Map (ButtonMask, KeySym) (X ()))这里的问题是评估顺序。 当应用于某些XConfigkeys返回Map,然后我们得到的Map应该应用于c (如果我做对了),但Map如何应用于某些东西?

你的描述不太正确。 keys是一个记录字段。

当你有一个字段为foo :: T的记录类型R时, foo本身(用作一个值)的类型为R -> T (它是一个记录访问器函数)。

由于keysXConfig一个字段, XConfig其类型实际上是

keys :: XConfig l -> !(XConfig Layout -> Map (ButtonMask, KeySym) (X ()))

keys defaultConfig c

我们从defaultConfig提取keys字段。 存储在该字段中的值本身就是一个函数,我们将其应用于c以获取Map

Map不是一个功能; 它是一种数据结构,并不适用于任何东西。 相反,您正在创建一个基于defaultConfig的新配置,其keys功能将替换为新的匿名函数。 函数采用一种配置,并对其应用两个函数:你的mikeys ,以及keys defaultConfig返回的任何函数keys defaultConfig 两个结果Maps将由配置的key功能合并并返回。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM