[Haskell-cafe] Re: Editors for Haskell

Simon Marlow simonmarhaskell at gmail.com
Fri Jun 2 07:18:56 EDT 2006

Malcolm Wallace wrote:
> "Brian Hulley" <brianh at metamilk.com> wrote:
>>Thanks for pointing this out. Although there is still a problem with
>>the  fact that var, qvar, qcon etc is in the context free syntax
>>instead of the  lexical syntax so you could write:
>>        2 `    plus      ` 4
>>        (    Prelude.+
>>               {- a comment -} ) 5 6
> You appear to be right.  However, I don't think I have ever seen a piece
> of code that actually used the first form.  People seem to naturally
> place the backticks right next to the variable name.  Should we consider
> the fact that whitespace and comments are permitted between backticks to
> be a bug in the Report?  It certainly feels like it should be a lexical
> issue.

I tend in the other direction: I'd rather see as much as possible pushed 
into the context-free syntax.  The only reason that qualified 
identifiers are in the lexical syntax currently is because of the clash 
with the '.' operator.

I'm not sure I can concisely explain why I think it is better to use the 
context-free syntax than the lexical syntax, but I'll try.  I believe 
the lexical syntax should adhere, as far as possible, to the following rule:

   juxtaposition of lexemes of different classes should not affect
   the lexical interpretation.

in other words, whitespace between different lexemes is irrelevant.  I 
know this rule is violated in many places in the Haskell lexical syntax, 
but at least for me it serves as a guideline for what is tasteful.  For 
example, it rules out `x` as a lexeme, because ` ought to be a reserved 
symbol, and then `x` would be a justaposition of 3 lexemes.  This also 
explains to me why I think many of GHC's syntactic extensions are ugly 
(42#, (#..#), $x, [d|..|], etc.).  However, it's really hard to extend 
the lexical syntax and stick to this rule, especially if you want to add 
brackets.  So you should consider this a rant, nothing more.


More information about the Haskell-Cafe mailing list