[Haskell-cafe] confusion about 'instance'....

Jules Bean jules at jellybean.co.uk
Thu Jan 10 09:22:06 EST 2008

Nicholls, Mark wrote:
> My confusion is not between OO classes and Haskell classes, but exactly
> are the members of a Haskell type class...I'd naively believed them to
> be types (like it says on the packet!)...but now I'm not so sure.

Which packet?

Classes are not types.

Classes are groups of types. Sets of types. Classifications of types.

For any type, you can ask the quesiton "is this type a member of this 
class, or not?"

Without wishing to split hairs too finely, I find it a useful intuition 
not to consider the class context "part of the type" somehow.

So, when you see this:

(Num a, Eq b) => a -> b -> a

Rather than thinking of that whole thing as a type, it helps to think of 
the part on the right of the => as the 'actual type' and the part on the 
left of the => as "some extra constraints on the type".

So you might say this has the type "a -> b -> a", providing that a is a 
Num and b is an Eq.


More information about the Haskell-Cafe mailing list