Mam projekt Haskell, który regularnie używa wielu funkcji językowych i chcę, aby blok rozszerzenia języka dla każdego pliku źródłowego był taki sam. Oto lista,haskell - jakikolwiek sposób na zrolowanie swojej własnej grupy pragmatów językowych?
{-# 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 #-}
Może dla niektórych to jest złą praktyką, ale uważam rozszerzenia językowe być częścią „Haskell +”, które zwykle napisać kod. I chcę to być te same moduły szerokości. Na przykład kod NoImplicitPrelude
zmienia się dramatycznie i chcę, aby był jednolity dla wszystkich modułów.
Pytanie: Jak mogę to osiągnąć, bez wklejenia bloku językowego do każdego pliku? To denerwuje, jak często uczę się nowej funkcji językowej, dodam ją do modułu A
, następnie zacznę pracować nad modułem B
i zdaję sobie sprawę, że muszę skopiować blok językowy z modułu A
.
Po prostu FYI CPP
pragma z #include
ma nie załatwić sprawę! Z góry dziękuję.
wstępną vious powiązane pytanie tutaj: http://stackoverflow.com/questions/6005382/haskell-ways-to-have-a-clean-import-block-re-exporting-modules-multiple-im – gatoatigrado
Zdecydowanie sugerowałbym nie włączanie ' OverlappingInstances' na liście domyślnych rozszerzeń. – ehird
@ehird, dobry punkt; jest używany okazjonalnie. – gatoatigrado