我有一个经常使用许多语言功能的Haskell项目,我希望每个源文件的语言扩展块都是相同的。这是一个清单,
{-# LANGUAGE Arrows,
BangPatterns,
DefaultSignatures,
DeriveDataTypeable,
DeriveFunctor,
EmptyDataDecls,
FlexibleContexts,
FlexibleInstances,
FunctionalDependencies,
GADTs,
GeneralizedNewtypeDeriving,
MultiParamTypeClasses,
NamedFieldPuns,
NoImplicitPrelude,
NoMonomorphismRestriction,
OverlappingInstances,
RankNTypes,
RebindableSyntax,
ScopedTypeVariables,
StandaloneDeriving,
TemplateHaskell,
TypeFamilies,
TypeOperators,
TypeSynonymInstances,
UndecidableInstances,
ViewPatterns #-}
也许对某些人来说这是不好的做法,但我认为语言扩展是我经常编写代码的“Haskell +”的一部分。而且,我希望它在模块之间是相同的。例如, NoImplicitPrelude
大大改变了语言,我希望所有模块都统一。
题:如何在不将语言块复制粘贴到每个文件中的情况下如何实现此目的?如何经常学习新的语言功能,将其添加到模块中会让人讨厌 A
,然后开始研究模块 B
,并意识到我必须从模块中复制语言块 A
。
仅供参考 CPP
pragma with a #include
不 不 诀窍!提前致谢。