On Tue, 2008-10-14 at 19:20 -0700, George Pollard wrote:
> I'm a little confused. Why is this allowed:
> 
> > data Blah = Blah
> > 
> > instance Eq Blah where
> >         x == y = True
> 
> But not this:
> 
> > class Stringable a where
> >         toString :: a -> String
> > 
> > instance Stringable [Char] where
> >         toString = id
> 
> (Resulting in:)
> 
> > Illegal instance declaration for `Stringable [Char]'
> >         (All instance types must be of the form (T a1 ... an)
> >          where a1 ... an are distinct type *variables*
> >          Use -XFlexibleInstances if you want to disable this.)
> >     In the instance declaration for `Stringable [Char]'
> 
> 'Blah' isn't a type variable, is it? Is my brain just not working right
> today?

Blah = T

for [Char], T = [] and a1 = Char where it should be a variable.

Why this is an error is basically because the Report says so.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to