Strong +1 from me, this is *especially* annoying when you want to selectively 
re-export parts of a module from somewhere or in case of exports generated by 
TH.

Cheers,
Merijn

> On 26 Oct 2014, at 12:28, Tom Murphy <amin...@gmail.com> wrote:
> 
> (Not to be confused with the "hiding import behavior" discussion also going 
> on)
> 
> --
> 
> Currently, I'm able to write "module Foo where" to export everything defined 
> in Foo.
> 
> If, though, I add to the module some definitions which I don't want to 
> export...
> 
>     data Lockbox = MkLockbox Int
> 
>     internalFunction = ...
> 
> ...I then have to explicitly enumerate everything that I *do* want the module 
> to export, and add to that list each time I add to the module.
> 
> I propose that instead, we're able to simply say what we mean:
> 
>     module Foo hiding (Lockbox(MkLockbox), internalFunction) where
> 
> I think its semantics are immediately clear to the reader.
> 
> There's a little bit of bikeshedding that needs to happen (e.g. is "hiding 
> (Foo(..))" sufficient to hide the type Foo and not just its constructors), 
> but are people +1 on this? I've frequently wanted this behavior.
> 
> Tom
> 
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users@haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to