wiki:MultiParamTypeClasses

Version 9 (modified by ijones, 8 years ago) (diff)

--

Multi-parameter type classes

Brief Explanation

Classes take one or more arguments, becoming relations between types. See also the dilemma they cause.

The mtl package of the Haskell hierarchical libraries utilizes this feature. The base package contains only two such classes:

class HasBounds a => IArray a e
class (HasBounds a, Monad m) => MArray a e m

There are FlexibleInstances

instance IArray Array e
instance IArray UArray Bool
instance IArray UArray Char
...

but no OverlappingInstances.

References

Tickets

#49
add multi parameter type classes
#90
solve the MultiParamTypeClassDilemma

Pros

  • offered by GHC and Hugs for years
  • express more interesting relationships

Cons