lexer puzzle

Derek Elkins ddarius at hotpop.com
Sat Sep 13 20:04:17 EDT 2003


On Sun, 14 Sep 2003 00:30:40 +0200
Marcin 'Qrczak' Kowalczyk <qrczak at knm.org.pl> wrote:

> Dnia pi_ 12. wrze_nia 2003 20:31, Iavor Diatchki napisa_:
> 
> > what do people think should be the tokens produced by a haskell
> > lexer when applied to the following input:
> >
> >    A...
> 
> A (constructor), then ... (operator).
> This is how I understand Haskell 98 lexing rules.

My first thought was that it should produce, A.. ., as in (.) (A..), but
obviously that would be wrong as A.. must be a function and therefore to
be passed to (.) it would need to be (A..).

So with a little more thought, I seem to agree with GHC despite it being
non-sensical.

GHC produces the following given: 
5 Prelude... 6
"Variable not in scope: `Prelude...'"

I take this to mean the (..) function from the Prelude module.  This is,
as far as I'm concerned, syntactically correct, despite the fact that
there isn't any way to make a (..) function* as .. is syntax (A... being
different syntax).

* Well... actually I'm pretty certain you could with TH



More information about the Haskell mailing list