У меня есть проект 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
.
Просто FYI прагма CPP
с #include
не делает этого трюка! Спасибо заранее.