-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Immediately lifts to a desired level -- @package elevator @version 0.1.1.1 -- | Automated effect elevator module Control.Elevator class Tower f where type family Floors f :: List (* -> *) type instance Floors f = Empty toLoft = exhaust toLoft :: Tower f => Union (Floors f) a -> f a type Elevate f g = (Tower g, f ∈ Floors1 g) type Floors1 g = g :> Floors g toLoft1 :: Tower f => Union (Floors1 f) a -> f a elevate :: Elevate f g => f a -> g a instance (Error e, Monad m, Tower m) => Tower (ErrorT e m) instance (Monad m, Tower m) => Tower (ListT m) instance (Monad m, Tower m) => Tower (MaybeT m) instance (Monad m, Tower m) => Tower (ContT r m) instance (Monoid w, Monad m, Tower m) => Tower (WriterT w m) instance (Monoid w, Monad m, Tower m) => Tower (WriterT w m) instance (Monad m, Tower m) => Tower (ReaderT r m) instance (Monad m, Tower m) => Tower (StateT s m) instance (Monad m, Tower m) => Tower (StateT s m) instance Tower (Union u) instance Tower (ST s) instance Tower [] instance Tower ((->) r) instance Tower (Either e) instance Tower Maybe instance Tower Identity instance Tower IO