I don't think there is a user-visible difference between treating "a = 1" as a 
declaration vs as a let. One might be easier to implement.

My guess is that Austin's thought in that chat log is around MonoLocalBinds. 
MonoLocalBinds (implied by GADTs and TypeFamilies) means that some let 
declarations are not generalized. In particular, let declarations that are 
manifestly *not* top-level. Like this:

foo x = let y = x in y

That `y` is manifestly not top-level because its RHS mentions a local variable. 
So, `y` is not generalized if MonoLocalBinds is in effect.

But, in GHCi, this matters not. Anything the user writes in a top-level 
variable assignment can only possibly refer to top-level things, never to local 
things (because there are no local things). So MonoLocalBinds will not trigger, 
and treating an assignment as either a declaration or a "let" should have the 
same meaning.

Richard

On Aug 22, 2015, at 11:50 AM, Alex Rozenshteyn <rpglove...@gmail.com> wrote:

> I'm thinking of working on this ticket 
> (https://ghc.haskell.org/trac/ghc/ticket/7253), so, as per mpickering's 
> suggestion (https://phabricator.haskell.org/chatlog/channel/3/?at=1353572), 
> I'm emailing the list to solicit input.
> 
> My first instinct was to treat declarations like "a = 1" in GHCI as 
> equivalent to "let a = 1"; this would be a straightforward matter of parsing. 
> On the other hand, as thoughtpolice comments, let-bound variables are treated 
> subtly differently than top-level bindings, so the proper solution may be 
> more involved.
> 
> Comments?
> _______________________________________________
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to