-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Immediately lifts to a desired level -- -- This package provides elevate function which composes -- lift-like transformations automatically. @package elevator @version 0.1.1 -- | Automated effect elevator module Control.Elevator class Tower f where type family Floors f :: List (* -> *) 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 Control.Elevator.Tower GHC.Types.IO instance Control.Elevator.Tower Data.Functor.Identity.Identity instance Control.Elevator.Tower GHC.Base.Maybe instance Control.Elevator.Tower (Data.Either.Either e) instance Control.Elevator.Tower ((->) r) instance Control.Elevator.Tower [] instance Control.Elevator.Tower (GHC.ST.ST s) instance Control.Elevator.Tower (Data.OpenUnion1.Clean.Union u) instance (GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.State.Lazy.StateT s m) instance (GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.State.Strict.StateT s m) instance (GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.Reader.ReaderT r m) instance (GHC.Base.Monoid w, GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.Writer.Lazy.WriterT w m) instance (GHC.Base.Monoid w, GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.Writer.Strict.WriterT w m) instance (GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.Cont.ContT r m) instance (GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.Maybe.MaybeT m) instance (GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.List.ListT m) instance (GHC.Base.Monad m, Control.Elevator.Tower m) => Control.Elevator.Tower (Control.Monad.Trans.Except.ExceptT e m)