perm-0.4.0.0: permutation Applicative and Monad with many mtl instances

Portabilitynon-portable
Stabilityexperimental
MaintainerAndy Sonnenburg <andy22286@gmail.com>
Safe HaskellSafe-Inferred

Control.Monad.Perm

Description

 

Synopsis

Documentation

data Perm m a Source

The permutation applicative

Instances

MonadTrans Perm 
(Monad (Perm m), MonadFix m, MonadThrow e m) => MonadThrow e (Perm m) 
(Monad (Perm m), MonadFix m, MonadReader r m) => MonadReader r (Perm m) 
(Monad (Perm m), MonadFix m, MonadState s m) => MonadState s (Perm m) 
MonadFix m => Monad (Perm m) 
Functor m => Functor (Perm m) 
(Monad (Perm m), MonadFix m) => MonadFix (Perm m) 
(Monad (Perm m), MonadFix m, MonadPlus m) => MonadPlus (Perm m) 
(Functor (Perm m), Applicative m) => Applicative (Perm m) 
(Applicative (Perm m), Alternative m) => Alternative (Perm m) 
(Monad (Perm m), MonadFix m, MonadIO m) => MonadIO (Perm m) 
Monoid (m a) => Monoid (Perm m a) 

runPerm :: MonadPlus m => Perm m a -> m aSource

Unwrap a Perm, combining actions using the MonadPlus for f.

liftPerm :: m a -> Perm m aSource

A version of lift that can be used without a Monad for m.

liftPlus :: (forall a. m a -> m a -> m a) -> Perm m b -> Perm m b -> Perm m bSource

hoistPerm :: MonadFix n => (forall a. m a -> n a) -> Perm m b -> Perm n bSource

Lift a monad homomorphism from m to n into a monad homomorphism from Perm m to Perm n.