Tim,
If I have a type class for conversion to a type X:
class XType a where
toX :: a -> X
[...]
instance XType String where toX = ...
results in:
Illegal instance declaration for `XType 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 `XType String'
In addition to Derek's pointer, you could also consider extending the
class definition:
class XType a where
toX :: a -> X
listToX :: [a] -> X
listToX = ... -- some default definition for listToX
Of course, it depends on your type X whether a suitable default
definition for listToX can be given. Assuming that it can, you can
now, as before, have
instance XType Int where toX = ...
instance XType Double where toX = ...
instance XType Tuple where toX = ...
but also
instance XType Char where
toX c = ... -- your toX implementation for Char
listToX s = ... -- your toX implementation for String
This 'trick' is used in the standard libraries to accommodate a Show
instance for String, for instance.
Cheers,
Stefan
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe