I am trying to create an instance of a class for String types. I have
the following:
class Foo a where
mkFoo :: a -> String
instance Foo String where
mkFoo x = x
and receive the following error:
test.hs:9:0:
Illegal instance declaration for `Foo String'
(The instance type must be of form (T a b c)
where T is not a synonym, and a,b,c are distinct type
variables)
In the instance declaration for `Foo String'
Failed, modules loaded: none.
I see that in general I am not able to create an instance of a class for any
type [a], where a is a specific type.
I can work around it by wrapping my Strings in some other data type
but I'd like to understand why it's not possible. Any insight would
be appreciated.
-Adam