Type classes as polymorphic constraints
Can use a type class to constrain legal instantiations
eq_pair (x1,y1) (x2,y2) = x1==x2 and y1==y2
eq_pair :: (Eq a,Eq b)=>(a,b)->(a,b)->Bool
(eq a,Eq b) is a context that constrains the polymorphic type variables a and b to be instances of the Eq class