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