Tôi có một dự án Haskell thường xuyên sử dụng nhiều tính năng ngôn ngữ và tôi muốn khối mở rộng ngôn ngữ cho từng tệp nguồn giống nhau. Dưới đây là một danh sách,haskell - bất kỳ cách nào để cuộn nhóm pragmas LANGUAGE của riêng bạn?
{-# 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 #-}
Có lẽ đối với một số đó là thực hành xấu, nhưng tôi xem xét mở rộng ngôn ngữ là một phần của "Haskell +" mà tôi thường viết mã trong. Và, tôi muốn điều đó trở thành các module trên cùng. Ví dụ: NoImplicitPrelude
thay đổi ngôn ngữ một cách đáng kể và tôi muốn nó thống nhất cho tất cả các mô-đun.
Câu hỏi: Làm thế nào tôi có thể đạt được điều này mà không cần sao chép khối ngôn ngữ vào từng tệp? Nó gây phiền nhiễu như thế nào tôi thường học một tính năng ngôn ngữ mới, thêm nó vào module A
, sau đó bắt đầu làm việc trên mô-đun B
và nhận ra tôi phải sao chép khối ngôn ngữ từ mô-đun A
.
Chỉ cần FYI CPP
pragma với số #include
không không làm thủ thuật! Cảm ơn trước.
trước câu hỏi liên quan đến vious ở đây: http://stackoverflow.com/questions/6005382/haskell-ways-to-have-a-clean-import-block-re-exporting-modules-multiple-im – gatoatigrado
Tôi sẽ đề nghị không bao gồm ' OverlappingInstances' trong danh sách các tiện ích mở rộng mặc định của bạn. – ehird
@ lạ, điểm tốt; nó được sử dụng thỉnh thoảng. – gatoatigrado