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
...