Haskell 默认情况下,如何在项目范围内启用语言扩展/pragmas?

Haskell 默认情况下,如何在项目范围内启用语言扩展/pragmas?,haskell,cabal,haskell-stack,Haskell,Cabal,Haskell Stack,有没有一种方法可以将{-#LANGUAGE#-}pragmas放在以下任一位置: .cabal,或 stack.yaml 文件,为了避免在项目的每个*.hs文件中重复相同的头代码?正如@user2407038在评论中所说,您可以使用.cabal文件中的字段 如果您希望在项目中的所有模块中都有OverloadStrings和GADTs,您可以将其列在cabal文件的相关部分(即,如果您希望将其列在所有库文件中,请将其放在库中) 例如: -- <project>.cabal ...

有没有一种方法可以将
{-#LANGUAGE#-}
pragmas放在以下任一位置:

  • .cabal
    ,或
  • stack.yaml

文件,为了避免在项目的每个*.hs文件中重复相同的头代码?

正如@user2407038在评论中所说,您可以使用
.cabal
文件中的字段

如果您希望在项目中的所有模块中都有
OverloadStrings
GADTs
,您可以将其列在cabal文件的相关部分(即,如果您希望将其列在所有库文件中,请将其放在库中)

例如:

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

哇,真烦人。来自阴谋集团的错误消息字面上说要使用“扩展:”,但您必须使用“默认扩展:”…

中的默认扩展:
字段Cabal@user2407038,我认为任何提到这一特性的话,都应该解释为什么很多人(比如我自己)普遍反对。这使得我们无法从每个模块的文本中看到哪些扩展正在发挥作用。这可能会让人很困惑!
-- package.yaml
library:
  source-dirs: src
  default-extensions:
    - OverloadedStrings
    - GADTs
  exposed-modules:
    - MyModule
  ...