elevator-0.1.1: Immediately lifts to a desired level

Copyright(c) Fumiaki Kinoshita 2014
LicenseBSD3
MaintainerFumiaki Kinoshita <fumiexcel@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Control.Elevator

Description

Automated effect elevator

Documentation

class Tower f where Source

Minimal complete definition

Nothing

Associated Types

type Floors f :: List (* -> *) Source

Methods

toLoft :: Union (Floors f) a -> f a Source

Instances

Tower [] Source 
Tower IO Source 
Tower Identity Source 
Tower Maybe Source 
Tower ((->) r) Source 
Tower (Either e) Source 
Tower (ST s) Source 
Tower (Union u) Source 
(Monad m, Tower m) => Tower (MaybeT m) Source 
(Monad m, Tower m) => Tower (ListT m) Source 
(Monoid w, Monad m, Tower m) => Tower (WriterT w m) Source 
(Monoid w, Monad m, Tower m) => Tower (WriterT w m) Source 
(Monad m, Tower m) => Tower (ExceptT e m) Source 
(Monad m, Tower m) => Tower (StateT s m) Source 
(Monad m, Tower m) => Tower (StateT s m) Source 
(Monad m, Tower m) => Tower (ReaderT r m) Source 
(Monad m, Tower m) => Tower (ContT r m) Source 

type Elevate f g = (Tower g, f Floors1 g) Source

type Floors1 g = g :> Floors g Source

toLoft1 :: Tower f => Union (Floors1 f) a -> f a Source

elevate :: Elevate f g => f a -> g a Source