2017-02-21 19:55 GMT+01:00 Richard Eisenberg <[email protected]>:

> As I understand pattern and expression contexts are always separate in
> Haskell so the part just after 'of course' is not clear to me.
>
>
> Sadly, this is not true. We don’t always know whether we’re parsing an
> expression or a pattern. Specifically, imagine this prefix of a Haskell
> definition:
>
> foo = do
>   Just x
>

Ah yes, partial parses. I did not think about this.


> With -XTypeApplications, GHC lexes ‘ @‘ and ‘@‘ separately.
>

For the record:

GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
Prelude> :set -XTypeApplications
Prelude> let f x@Nothing = print x in f Nothing
Nothing
Prelude> let f x @Nothing = print x in f Nothing
<interactive>:3:5: error: Parse error in pattern: f x @Nothing
Prelude> let f x@ Nothing = print x in f Nothing
Nothing
Prelude> let f x @ Nothing = print x in f Nothing
<interactive>:11:5: error: Parse error in pattern: f x @Nothing
Prelude> :set -XNoTypeApplications
Prelude> let f x@Nothing = print x in f Nothing
Nothing
Prelude> let f x@ Nothing = print x in f Nothing
Nothing
Prelude> let f x @Nothing = print x in f Nothing
Nothing
Prelude> let f x @ Nothing = print x in f Nothing
Nothing


> Perhaps the ghc-proposals process will bring such problems to light
> sooner. I’m sorry our design decisions here have caused trouble!
>

As I understand keeping Language Report full up to date is a lot of work,
but keeping just the sections about Lexing and Parsing up to date should be
a part of ghc-proposals in my opinion, so that independent tools have
information to rely on.

-- 
Gracjan
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to