
8 Apr
2008
8 Apr
'08
12:43 p.m.
PR Stanley wrote:
Hi What is the difference between
data T0 f a = MkT0 a instance Eq (T0 f a) where ...
and
data T0 f a = MkT0 a instance Eq a => Eq (T0 f a) where ...
The second one says that "TO f a" is only an instance of "Eq" if "a" is, while the first says that "TO f a" is an instance regardless of the type of its arguments. You can regard an "instance" declaration as an inference rule for the type checker, with "=>" meaning "implies" (though I don't think its the answer to your other question about names).