[Haskell] Hierarchical module namespaceextensionnotsufficiently
flexible
Simon Peyton-Jones
simonpj at microsoft.com
Fri Mar 11 05:56:14 EST 2005
| module A (qualified module A) where { f = 'f' }
| module B (module A) where { import A; ... }
| module C where { import B; ... }
|
| How do we refer to 'f' in B? I think the proposal suggests "A.f" or
"A.A.f".
| How do we refer to 'f' in C? I think the proposal suggests that "f"
| is not in scope in C.
| The reason is that "B" does not export "f", because there is no "f"
| and "A.f" in scope.
Correct, according to the rules I suggested.
| It seems that we cannot re-export qualified exports using module-style
| exports. Is this the intended design choice, or am I missing
| something?
Hmm. If you said
module B( module A.A ) where { import A; ... }
then since A.A.f and A.f are in scope, presumably A.f is exported, just
as it was from A.
Simon
More information about the Libraries
mailing list