On 08/01/06, Bruno Oliveira <[EMAIL PROTECTED]> wrote: > On 08 Jan 2006 16:37:47 +0100, Peter Simons wrote: > > >Bruno Oliveira writes: > > > >> class Foo o where > > >> (:+) :: o -> o -> o > > >The Haskell report specifies in section "2.4 Identifiers and > >Operators": > > > An operator symbol starting with a colon is a constructor. > > >Think of ':' as a character that is interpreted as "uppercase"; > >you can't use it to start a function or variable name. > > Then this declaration should be rejected as invalid, right? > > That's why I think this is a parsing bug... > > Cheers, > > Bruno
Hmm... yeah, it does seem like a parsing bug. The relevant rules from the report are: ---- topdecl -> ... | class [scontext =>] tycls tyvar [where cdecls] ... cdecls -> { cdecl1 ; ... ; cdecln } (n>=0) cdecl -> gendecl | ... gendecl -> vars :: [context =>] type (type signature) | ... vars -> var1 , ..., varn (n>=1) var -> varid | ( varsym ) varsym -> ( symbol {symbol | :})<reservedop | dashes> ---- So it should not be permitting a type declaration for something starting with a colon, since symbol does not match colon. _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell