2

我在 emacs 上使用 flymake(-ghc) (前奏设置,在任何人想知道之前,没有额外的配置)作为一个 yesod 项目,#if默认情况下这里和那里都有一些。除了 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)。

4

1 回答 1

3

我认为这个flymake-ghc东西在检查时不会启用 C 预处理器。要修复它,请将以下内容添加到受影响的 Haskell 文件的顶部:

{-# LANGUAGE CPP #-}

此编译指示启用包含文件的预处理器。

通常,这实际上是启用 Haskell 语言选项和扩展的首选方式,因为这样它们仅限于实际需要它们的文件。

于 2014-03-29T13:49:09.673 回答