El Oct 27, 2014, a las 7:42, Herbert Valerio Riedel <h...@gnu.org> escribió:
> On 2014-10-26 at 20:28:41 +0100, Tom Murphy wrote: > > [...] > >> 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. > > PS: As for semantics, I'd suggest to have > > module Foo hiding (Lockbox(MkLockbox), internalFunction) where > > the same effect moving the definitions of `Foo` into an hidden/internal > module `_Foo` and having `Foo` re-export it in the following way: > > module Foo (module _Foo) where > import _Foo hiding (Lockbox(MkLockbox), internalFunction) > > that should result the least surprise IMHO > Right -- hiding a type necessarily hides its constructors (and importing a constructor necessarily imports its type), which actually implies an obvious semantics. So there's less to bikeshed than I had thought. Tom _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users