
Am Dienstag, 27. September 2005 21:54 schrieb feucht@uni-koblenz.de:
On 27 Sep, Glynn Clements wrote:
It isn't defined in the prelude or any of the standard libraries.
The point is that the Haskell tokeniser treats any consecutive sequence of the symbols !#$%&*+./<=>?@^|-~ as a single operator token. This occurs regardless of whether a definition exists for the operator.
More generally, the tokenising phase is unaffected by whether or not an operator, constructor, identifier etc is defined. A specific sequence of characters will always produce the same sequence of tokens regardless of what definitions exist.
Thank you, that is the problem i am wrestling with.
The point is that in Haskell the set of operators is not fixed as it is in C, C++, Java etc. An operator in Haskell is similar to an identifier. The tokenizer or parser doesn't know which identifiers are defined at a certain point and which are not. It treats everything that looks like an identifier and is not a reserverd word as an identifier. In the same way, it treats every sequence of punctuation which is not reserved (like =, :: or -> is) as an operator. This is a very reasonable behavior.
-Philip
Best wishes, Wolfgang