Ho un progetto Haskell che usa regolarmente molte funzionalità linguistiche e voglio che il blocco di estensione della lingua per ogni file sorgente sia lo stesso. Ecco un elenco,haskell - un modo per lanciare il tuo gruppo di pragmi LANGUAGE?
{-# 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 #-}
Forse per alcuni è cattiva pratica, ma ritengo estensioni del linguaggio di far parte del "Haskell +" che io di solito scrivere il codice. E, voglio che per essere gli stessi moduli in tutto. Ad esempio, lo NoImplicitPrelude
cambia radicalmente la lingua e lo voglio uniforme per tutti i moduli.
Domanda: Come posso ottenere ciò senza incollare il blocco lingua in ogni file? Diventa fastidioso come spesso imparo una nuova lingua, aggiungila al modulo A
, quindi inizi a lavorare sul modulo B
e mi rendo conto che devo andare a copiare il blocco della lingua dal modulo A
.
Cordiali saluti il pragma CPP
con un #include
fa non fare il trucco! Grazie in anticipo.
pre viziosa domanda correlata qui: http://stackoverflow.com/questions/6005382/haskell-ways-to-have-a-clean-import-block-re-exporting-modules-multiple-im – gatoatigrado
Vorrei fortemente suggerire di non includere ' OverlappingInstances' nell'elenco delle estensioni predefinite. – ehird
@ehird, buon punto; è usato occasionalmente però. – gatoatigrado