
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. Jules