我在emacs上使用flymake(-ghc)(前奏设置,在任何人想知道之前,没有额外的配置)为yesod项目有一些#if
&#39 ;默认情况下,这里和那里。除了flymake显示此错误之外,一切都很好:
/path/to/Import.hs:18:2:
lexical error at character 'i'
并且该行恰好是
#if __GLASGOW_HASKELL__ >= 704
所以,与ghci完全相同的行为:
Prelude> #if something
<interactive>:2:2: lexical error at character 'i'
我在这里找不到任何东西?
奖励:auto-complete
也无法使用(emacs,前奏曲,默认设置等):它适用于其他内容(例如 R )。
答案 0 :(得分:3)
我认为这个flymake-ghc
事件在检查时不启用C预处理器。要修复它,请将以下内容添加到受影响的Haskell文件::
{-# LANGUAGE CPP #-}
此pragma启用包含文件的预处理器。
通常,这实际上是启用Haskell语言选项和扩展的首选方式,因为这种方式仅限于实际需要它们的文件。