On 23/08/2012 17:09, Ramana Kumar wrote:
M is not the current module, in which case the only way that an
entity could be in scope in the current module is if it was exported
by M and subsequently imported by the current module, so adding
"exported by module M" is superfluous.
In this case, what you said is not quite correct: an entity could be in
scope in the current module if it was defined in the current module, or
if it was imported from some other module (not M). These are the two
kinds of entity I thought of when I first read the sentence, and was
expecting clarification that only ones imported from M are to be considered.
That wouldn't be a clarification, it would be a change in the
definition. Remember that entities that are in scope as M.x might not
come from module M. Consider:
import X as M
now saying "module M" in the export list will export everything from X.
Furthermore, we can export many modules at the same time:
import X as M
import Y as M
import M
and then saying "module M" in the export list will export all of the
entities from modules X, Y and M.
There was lots of discussion about this in the past, for some tricky
issues see e.g.
http://www.haskell.org/pipermail/haskell/2001-August/007767.html
http://www.haskell.org/pipermail/cvs-ghc/2002-November/015880.html
http://www.haskell.org/pipermail/haskell/2002-November/010662.html
Cheers,
Simon
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime