I suggest to add instead of (or with) export section Pragma EXPORT: We have 3 values: public, abstract and private. Data(with newtypes and types,..) could be public, like `Data(...)` or abstract `Data`. Other cases abstract = public.
{-# EXPORT <smth> #-} pragma is valid till next {-# EXPORT <smth> #-}. We also can add local pragma: {-# EXPORT <smth> from #-} ... {-# EXPORT <smth> untill #-} Outside of block is rule of previous {-# EXPORT <smth> #-}. Finally we also have rule for 1: {-# EXPORT <smth> one #-} Example module C where {-# EXPORT public #-} data A1... data A2... {-# EXPORT abstract from #-} newtype A3... data A4... {-# EXPORT abstract until #-} type A5... {-# EXPORT private one #-} data A6... foo = ... {-# EXPORT private one #-} bar = ... baz = ... lorem = ... {-# EXPORT private #-} insput ... dolor = .. sit = ... {-# EXPORT public one #-} amen = ... consectetur = ... adipisicing = ... elit = ... sed = ... eiusmod = ... tempor = ... incididunt = ... {-# EXPORT public from #-} ut = ... labore = ... et = ... {-# EXPORT public until #-} dolore = ... magna = ... aliqua = ... is the same as module C ( A1(..) , A2(..) , A3 , A4 , A5(..) , foo , baz , lorem , amen , ut , labore , et ) where data A1... data A2... newtype A3... data A4... type A5... data A6... foo = ... bar = ... baz = ... lorem = ... insput ... dolor = .. sit = ... amen = ... consectetur = ... adipisicing = ... elit = ... sed = ... eiusmod = ... tempor = ... incididunt = ... ut = ... labore = ... et = ... dolore = ... magna = ... aliqua = ... We also could have complex pragma, like {-# EXPORT inherit one foo #-} bar=... Backward compatibility: module A where ... ~ module A where {-# EXPORT public #-} ... module B ( .... ) where ... ~ module B ( .... ) where {-# EXPORT private #-} ... -- View this message in context: http://haskell.1045720.n5.nabble.com/Proposal-Pragma-EXPORT-tp5736547.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe