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 = doJust x
With -XTypeApplications, GHC lexes ‘ @‘ and ‘@‘ separately.
Perhaps the ghc-proposals process will bring such problems to light sooner. I’m sorry our design decisions here have caused trouble!