mzv-0.1.0.2: Implementation of the "Monads, Zippers and Views" (Schrijvers and Oliveira, ICFP'11)

Safe HaskellNone

Control.Monad.Views

Documentation

class MonadMorphism g whereSource

Methods

idv :: Monad m => m `g` mSource

hcomp :: (Monad l, Monad m, Monad n) => (m `g` n) -> (l `g` m) -> l `g` nSource

hmap :: (Monad m, Monad n, MonadTrans t) => (m `g` n) -> t m `g` t nSource

from :: (Monad m, Monad n) => (n `g` m) -> n a -> m aSource

htmap :: (Monad (t1 n), Monad (t2 n), Monad m, Monad n, Monad (t1 m), MonadTrans t1, MonadMorphism g) => (forall m. Monad m => t1 m `g` t2 m) -> (m `g` n) -> t1 m `g` t2 nSource

newtype n :-> m Source

Constructors

Uni (forall a. n a -> m a) 

liftv :: (MonadTrans t, Monad m) => m :-> t mSource

r1 :: (MonadTrans t, Monad m, MonadState s (t m)) => ReaderT s m :-> t mSource

ra :: (Monad m, MonadState r (t m), MonadTrans t) => :-> (ReaderT r m) (t m)Source

data n :><: m Source

Constructors

Bi 

Fields

bifrom :: forall a. n a -> m a
 
bito :: forall a. m a -> n a
 

to :: (Monad n, Monad m) => (n :><: m) -> m a -> n aSource

inverse :: (Monad n, Monad m) => (n :><: m) -> m :><: nSource

class MonadMorphism g => View g whereSource

Methods

view :: (forall a. n a -> m a) -> (forall a. m a -> n a) -> n `g` mSource

Instances

stateIso :: (Monad m, View g) => (s2 -> s1) -> (s1 -> s2) -> StateT s2 m `g` StateT s1 mSource

r2 :: (MonadState s m, View g) => MonadStateReaderT s m `g` mSource

i :: (Monad m, View g) => m `g` mSource

o :: (MonadTrans t1, MonadTrans t2, Monad m, View g) => (t1 :> t2) m `g` t1 (t2 m)Source

vcomp :: (Monad (t m), Monad (t n1), Monad n, Monad m, Monad n1, MonadTrans t, MonadMorphism g) => g (t n1) n -> g m n1 -> g (t m) nSource