Versions of Functor, Applicative, and Monad which include their contained data types as type parameters, allowing restrictions on them in the instance declarations.