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
