【发布时间】:2015-04-18 17:59:17
【问题描述】:
我发现自己在我的 cabal 项目中经常使用这种 pragma 来强制 GHC 使用特定选项进行构建:
{-# OPTIONS_GHC -XFlexibleInstances -XRankNTypes ... #-}
但是当我看到其他人使用扩展时,他们总是这样声明:
{-# LANGUAGE FlexibleInstances, RankNTypes, ... #-}
但是,当我在 GHCi 中加载使用后一种方法的文件时,GHC 总是抱怨我使用的是 unrecognised pragma 并立即失败。
为什么 GHC 不接受LANGUAGE pragma,两者哪个更好?
注意:我的 GHC 版本是最新的:7.8.3,但发生这种情况时是 7.6.*。
【问题讨论】:
-
哪个 GHC 版本?也许你有一个很老的?还请注意在启用 CPP 时使用
#作为行的第一个字符(在这种情况下,在此之前添加一个空格)。 -
远射,但是您运行的是哪个版本的 GHC? (在你的 shell 中运行
ghc --version来找出答案。) -
很好奇。您能否显示给出此错误的整个文件?
-
LANGUAGE编译指示从 6.8.1 开始工作。我真的认为我们需要一个完整的文件来查看问题所在。 -
@AJFarmar 嗯。可能不是这样。如果您将 pragma 放在
module声明之后,则不会出现错误,但 GHC 只会将其视为注释(7.8.4)。
标签: haskell language-extension