
On 10/03/10 14:39, Klaus Gy wrote:
Thank You very much for the fast replies! I think I expressed myself badly in the first question. What does not work is the following:
class Test a
instance Num a => Test a
For a reason that seems pretty odd until you get used to it. In the instance, "Test a", or the "a" thereof, is called the "instance head". "Num a" is called the "context". When the compiler looks for an instance, it works by looking just at the "instance head": and "a" refers to all types. "instance Num a => Test a" says that the one and only instance that the class has is the one described in that instance. (And it only works when "a" is a Num type; for other attempted uses you'd get a compile error.) For various reasons, such instances aren't allowed by default. Note that instance Num a => Test [a] might also mean something different than you intended, even though it's allowed: it defines the one and only instance of Test on lists. -Isaac