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