Safe Haskell  None 

Documentation
A class for "liftable" data structures. Conceptually
an extension of MonadTrans
to allow deep lifting,
but lifting need not be done between monads only. Eg lifting
between Applicative
s is allowed.
For instances where m
and n
have 'return'/'pure' defined,
these instances must satisfy
lift (return x) == return x
.
This form of lift
has an extremely general type and is used primarily to
support sample
. Its excessive generality is the main reason it's not
exported from Data.Random. RVarT
is, however, an instance of
MonadTrans
, which in most cases is the preferred way
to do the lifting.
Lift m m  
Monad m => Lift Identity m  This instance is incoherent with the others. However,
by the law 
(Monad m, MonadTrans t) => Lift m (t m)  
MonadTrans t => Lift Identity (t Identity)  This instance is again incoherent with the others, but provides a
morespecific instance to resolve the overlap between the

Lift (RVarT Identity) (RVarT m) 