所以我坐在这里为自己编译 XMonad,因为我不喜欢我的包管理器提供版本 0.9.1 和喜欢 0.9.2。当前的问题是 XMonad 本身的编译成功但是当 xmonad 尝试解析我的配置文件时我得到一个奇怪的错误:
xmonad.hs:254:15:
Couldn't match expected type `containers-0.3.0.0:Data.Map.Map
(ButtonMask, KeySym) (X ())'
against inferred type `M.Map (KeyMask, KeySym) (X ())'
In the `keys' field of a record
In the first argument of `xmobar', namely
`myBaseConfig
{modMask = myModMask,
workspaces = withScreens nScreens myWorkspaces,
layoutHook = myLayoutHook nScreens, manageHook = myManageHook,
borderWidth = myBorderWidth,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor, keys = myKeys,
mouseBindings = myMouseBindings, logHook = myLogHook}'
In the second argument of `(=<<)', namely
`xmobar
(myBaseConfig
{modMask = myModMask,
workspaces = withScreens nScreens myWorkspaces,
layoutHook = myLayoutHook nScreens, manageHook = myManageHook,
borderWidth = myBorderWidth,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor, keys = myKeys,
mouseBindings = myMouseBindings, logHook = myLogHook})'
我能够追踪问题的原因,它显示在下面的这个 ghci 会话中:
GHCi, version 6.12.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
$ :m xmonad
syntax: :module [+/-] [*]M1 ... [*]Mn
$ :m XMonad
$ :t XConfig
XConfig
:: String
-> String
-> String
-> l Window
-> ManageHook
-> (Event -> X Data.Monoid.All)
-> [String]
-> KeyMask
-> KeyMask
-> (XConfig Layout
-> containers-0.3.0.0:Data.Map.Map (ButtonMask, KeySym) (X ()))
-> (XConfig Layout
-> containers-0.3.0.0:Data.Map.Map
(ButtonMask, Button) (Window -> X ()))
-> Dimension
-> X ()
-> X ()
-> Bool
-> XConfig l
$
Leaving GHCi.
问题似乎是这一行:
-> containers-0.3.0.0:Data.Map.Map (ButtonMask, KeySym) (X ()))
我原以为它可能会说:
-> M.Map (ButtonMask, KeySym) (X ()))
我只是想知道我是否正确诊断了问题,如果是,我该怎么做才能解决它?