perm- permutation Applicative and Monad with many mtl instances

MaintainerAndy Sonnenburg <>
Safe HaskellSafe-Inferred






data Perm m a Source

The permutation applicative


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.