[Haskell-beginners] A few really short beginners questions

Isaac Dupree ml at isaac.cedarswampstudios.org
Sun Oct 3 15:30:32 EDT 2010


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


More information about the Beginners mailing list