哈斯克尔大括号解析错误

问题描述:

运行Manjaro并试图获得XMonad工作,我遇到了以下xmonad.hs一个parse error on input '{'哈斯克尔大括号解析错误

import XMonad 
import XMonad.Hooks.DynamicLog 
import XMonad.Hooks.ManageDocks 
import XMonad.Util.Run(spawnPipe) 
import XMonad.Util.EZConfig(additionalKeys) 
import System.IO 

main = do 
    xmproc <- spawnPipe "xmobar" 

    xmonad $ defaultConfig 
    { manageHook = manageDocks <+> manageHook defaultConfig 
    , layoutHook = avoidStruts $ layoutHook defaultConfig 
    , logHook = dynamicLogWithPP xmobarPP 
      { ppOutput = hPutStrLn xmproc 
      , pptitle = xmobarColor "green" "" . shorten 50 
      } 
    , modMask = mod4Mask -- rebind Mod to the windows key 
    } `additionalKeys` 
    [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock; xset dmps force off") 
    , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") 
    , ((0, xK_Print), spawn "scrot") 
    ] 

我发现这个solution on su.sx,把我从xmonad.hs readthedocs.io。 对于开始我想使用该配置文件,但我不知道如何将该解决方案应用于此。如果有人能够解释为什么会出现这种错误以及如何解决这个问题,我真的很感激它,因为我最近刚刚开始使用Haskell,并且它真的让我的想法陷入了未知的程度......:D

+1

那么,你觉得编译器如何解析这段代码呢? (画圆括号)提示:您链接的SuperUser上的解决方案没有错误。 – leftaroundabout

缩进后的所有内容在xmonad $ defaultConfig线进一步向右(似乎有些压痕,当你粘贴the example丢失):

main = do 
    xmproc <- spawnPipe "xmobar" 

    xmonad $ defaultConfig 
     { manageHook = manageDocks <+> manageHook defaultConfig 
     , layoutHook = avoidStruts $ layoutHook defaultConfig 
     , logHook = dynamicLogWithPP xmobarPP 
         { ppOutput = hPutStrLn xmproc 
         , ppTitle = xmobarColor "green" "" . shorten 50 
         } 
     , modMask = mod4Mask  -- Rebind Mod to the Windows key 
     } `additionalKeys` 
     [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock; xset dpms force off") 
     , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") 
     , ((0, xK_Print), spawn "scrot") 
     ] 

线在一个做块“父”缩进级别被解析为单独的语句,这是这里不合适。