[Haskell-cafe] Flexible instances
Derek Elkins
derek.a.elkins at gmail.com
Tue Oct 14 22:32:14 EDT 2008
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.
More information about the Haskell-Cafe
mailing list