A library for restricted monads based on associated datatypes.
This allows datatypes such as Set to be made into monads.
Users can either use the NoImplicitPrelude extension and use
Control.RMonad directly, or use Control.RMonad.AsMonad with
the embed and unEmbed combinators to use the normal Prelude
monad operations.