<div dir="ltr">Hi all,<div><br></div><div>I was thinking about implementing <a href="https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#visible-type-application">@Type syntax</a> highlight for <a href="https://github.com/haskell/haskell-mode">haskell-mode</a> and noticed a rule about spacing required before @-sign.</div><div><br></div><div>I do not understand where does this rule come from and what does it buy us.</div><div><br></div><div>Experimentation shows that @-patterns do not care about spaces at all:</div><font face="monospace, monospace"><br>Prelude> let f a @ Nothing = print a in f Nothing<br>Nothing</font><div><font face="monospace, monospace"><br></font>Comment next to implementation says: "This, of course, conflicts with as-patterns. The conflict arises because expressions and patterns use the same parser, and also because we want to allow type patterns within expression patterns."</div><div><br></div><div>As I understand pattern and expression contexts are always separate in Haskell so the part just after 'of course' is not clear to me.</div><div><br></div><div>Can I get an example for "we want to allow type patterns within expression patterns"?</div><div><br></div><div>I understand the part "expressions and patterns use the same parser" but then I'd rather file a bug report about this one.</div><div><br></div><div>Rationale: I'd rather limit usage for horizontal space to separate tokens on the lexer level. This looks like it tries to promote space to separate things on parser level, which is rather hard to get right in crude parsers that we have for syntax highligh, indentation, completion and the like.</div><div><br></div><div>-- </div><div>Gracjan</div><div><br></div></div>