On 09 December 2004 16:37, Malcolm Wallace wrote: > Robert Dockins <[EMAIL PROTECTED]> writes: > >>> Prelude> [1..5] `zipWith (+)` [7..] >>> <interactive>:1: parse error on input `(' >> >> is there a technical reason for this or did it just happen? > > If you are asking why general expressions are prohibited between > backticks, yes, there is a reason. The expression could be > arbitrarily large, so you might have to search many lines to find the > closing backtick. But in such a situation, it is surely much more > likely > that the programmer has simply forgotten to close the ticks around > a simple identifier. Just think of the potential for delightfully > baffling type error messages that might result!
Forgetting to close a tick would lead to an odd number of ticks, which would probably be flagged as a parse error. Unless you had an even number of missing ticks, of course :-) You can't allow completely general expressions inside backticks, otherwise you run into ambiguity with: 1 `plus` 2 + 3 `plus` 4 so, is that (plus 1 2) + (plus 3 4) or is it ((2+3) plus plus) 1 4 So it would have to be `fexp` only (see the Haskell grammar for fexp). And there's fixities: you can specify the fixity of `x`, but it doesn't make sense to specify the fixity of an expression. There's a historical reason too: `x` and (+) used to be single lexical tokens. I think that changed in Haskell 1.3, but I could be mistaken. Cheers, Simon _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe