可以&#34; { - #LANGUAGE <feature># - }&#34; pragma可以放在<project> .cabal或stack.yaml文件中吗?

时间:2018-01-31 00:00:07

标签: haskell cabal haskell-stack

有没有办法将{-# LANGUAGE <feature> #-} pragma放在:

  • <project>.cabal
  • stack.yaml

文件,以避免在项目的每个 *。hs 文件中重复相同的标题代码?

2 个答案:

答案 0 :(得分:2)

正如@ user2407038在评论中所说,您可以使用<project>.cabal文件中的default-extensions字段。

如果你想在项目的所有模块中都有OverloadStringsGADTs,你可以将它列在你的cabal文件的相关部分(例如,如果你想要它用于你的所有库文件,把它放在库中)。

例如:

-- <project>.cabal
...
library
  hs-source-dirs:       src
  default-extensions:   GADTs
                      , OverloadedStrings 
  ...

如果您使用package.yaml配置文件生成<project>.cabal文件,则还可以在此处指定此字段。

-- package.yaml
library:
  source-dirs: src
  default-extensions:
    - OverloadedStrings
    - GADTs
  exposed-modules:
    - MyModule
  ...

答案 1 :(得分:0)

哇,这很烦人。来自 cabal 的错误消息字面意思是使用“extensions:”,但您必须使用“default-extensions:”...