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

Reply via email to