cabal 给了我混合的信息。当我说:

Extensions: DeriveFunctor

它说:
Warning: Unknown extensions: DeriveFunctor

但是当我说:
GHC-Options: -XDeriveFunctor

它说:
Warning: Instead of 'ghc-options: -XDeriveFunctor' use 'extensions:
DeriveFunctor'

现在我将只使用 {-# LANGUAGE DeriveFunctor #-} 编译指示。
$ cabal --version
cabal-install version 0.8.2
using version 1.8.0.6 of the Cabal library
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.12.3
$ basename $(mdfind haskell-platform | grep .dmg)
haskell-platform-2010.2.0.0.i386.dmg

最佳答案

根据 Hackage documentation ,从 Cabal-1.8.0.6 开始,DeriveFunctor 无法识别。这是 GHC 的一个相对较新的补充,它似乎没有广泛使用,所以我并不感到惊讶 Cabal 会忽略它。这可能应该作为针对 Cabal 的错误(功能请求?)提交。

@Tom Lokhorst 是对的,语言编译指示是最好的选择。我不喜欢使用 Cabal 的 Extensions 字段,因为这样所有模块的所有扩展都处于事件状态,而我通常不希望这样。

关于haskell - DeriveFunctor 是公认的扩展吗? cabal 似乎很困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4001749/

10-13 09:40