Proposal: Scoping rule change
lennart at augustsson.net
Tue Jul 24 02:48:01 CEST 2012
An optional shadowing warning (for the paranoid) seems reasonable.
On Tue, Jul 24, 2012 at 1:45 AM, Greg Weber <greg at gregweber.info> wrote:
> sounds good. will there be a shadowing warning?
> On Mon, Jul 23, 2012 at 5:28 PM, Lennart Augustsson
> <lennart at augustsson.net> wrote:
> > It's not often that one gets the chance to change something as
> > fundamental as the scoping rules of a language. Nevertheless, I would
> > like to propose a change to Haskell's scoping rules.
> > The change is quite simple. As it is, top level entities in a module
> > are in the same scope as all imported entities. I suggest that this
> > is changed to that the entities from the module are in an inner scope
> > and do not clash with imported identifiers.
> > Why? Consider the following snippet
> > module M where
> > import I
> > foo = True
> > Assume this compiles. Now change the module I so it exports something
> > called foo. After this change the module M no longer compiles since
> > (under the current scoping rules) the imported foo clashes with the
> > foo in M.
> > Pros: Module compilation becomes more robust under library changes.
> > Fewer imports with hiding are necessary.
> > Cons: There's the chance that you happen to define a module identifier
> > with the same name as something imported. This will typically lead to
> > a type error, but there is a remote chance it could have the same
> > type.
> > Implementation status: The Mu compiler has used the scoping rule for
> > several years now and it works very well in practice.
> > -- Lennart
> > _______________________________________________
> > Haskell-prime mailing list
> > Haskell-prime at haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-prime
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-prime