Marcin 'Qrczak' Kowalczyk <[EMAIL PROTECTED]> writes: > > > > A... > > > > > > A (constructor), then ... (operator). > > > This is how I understand Haskell 98 lexing rules. > > Argh, I was wrong. It's A.. (qualified operator), then . (operator).
You are forgetting about the maximal munch rule. An operator cannot appear directly next to another operator without some whitespace to separate them. For instance "A.+." is an operator called (+.) from module A, not an operator called + followed by compose. But, although "A...." could be the three-dot operator "..." from the module A, it is not possible to have "A..." interpreted as a two-dot operator, because ".." is reserved as sugar for enumeration sequences, and so is explicitly excluded from the varsym production. Thus, the only possible lexical interpretation is the one you first suggested, namely a constructor "A" followed by a three-dot operator "...". Regards, Malcolm _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell