elevator-0.1.2: 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 [] 
Tower IO 
Tower Maybe 
Tower Identity 
Tower ((->) r) 
Tower (Either e) 
Tower (ST s) 
Tower (Union u) 
(Monad m, Tower m) => Tower (MaybeT m) 
(Monad m, Tower m) => Tower (ListT m) 
(Monoid w, Monad m, Tower m) => Tower (WriterT w m) 
(Monoid w, Monad m, Tower m) => Tower (WriterT w m) 
(Monad m, Tower m) => Tower (ExceptT e m) 
(Monad m, Tower m) => Tower (StateT s m) 
(Monad m, Tower m) => Tower (StateT s m) 
(Monad m, Tower m) => Tower (ReaderT r m) 
(Monad m, Tower m) => Tower (ContT r m) 

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