Constraint package:constraints

ConstraintKinds made type classes into types of a new kind, Constraint.
Eq :: * -> Constraint
Ord :: * -> Constraint
Monad :: (* -> *) -> Constraint
The need for this extension was first publicized in the paper Scrap your boilerplate with class: extensible generic functions by Ralf Lämmel and Simon Peyton Jones in 2005, which shoehorned all the things they needed into a custom Sat typeclass. With ConstraintKinds we can put into code a lot of tools for manipulating these new types without such awkward workarounds.
The kind of lifted constraints
Constraint manipulation GHC 7.4 gave us the ability to talk about ConstraintKinds. They stopped crashing the compiler in GHC 7.6. This package provides a vocabulary for working with them.
Coerce a dictionary unsafely from one type to another