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

Safe HaskellNone

Control.Monad.Zipper

Documentation

newtype (t1 :> t2) m a Source

Constructors

Z 

Fields

runZ :: t1 (t2 m) a
 

Instances

(Monad m, Monad n, LWith list n (:> (:> t0 t1) t2 m), MonadTrans t2, MonadTrans t1, MonadTrans t0) => LWith2 list HFalse n (:> t0 (Tagged e) (t1 (t2 m))) 
(Monad m, ~ (* -> *) n (:> t0 t n'), Monad n', LWith list n' m, MonadTrans t, MonadTrans t0) => LWith2 list HTrue n (:> t0 (Tagged e) (t m)) 
(HMember t l b, LWith2 l b n (:> t0 (Tagged t) m), Monad m, Monad n) => LWith l n (:> t0 (Tagged t) m) 
(Monad (t' n), Monad m, Monad n, MonadTrans t, ~ (* -> *) m (:> (:> t (Tagged tag)) t' n), MonadTrans t') => TWith tag m (:> t (Tagged tag) (t' n)) 
(Monad m, Monad n, MonadTrans t, ~ (* -> *) m (t n)) => TWith tag m (:> t (Tagged tag) n) 
(MonadTrans t1, MonadTrans t2, Monad m, MonadWriter w (t2 m)) => MonadWriter w (:> t1 t2 m) 
(MonadTrans t1, MonadTrans t2, Monad m, MonadState s (t2 m)) => MonadState s (:> t1 t2 m) 
(MonadTrans t1, MonadTrans t2, Monad m, MonadReader e (t2 m)) => MonadReader e (:> t1 t2 m) 
(MonadTrans t1, MonadTrans t2, Monad m, MonadError e (t2 m)) => MonadError e (:> t1 t2 m) 
(MonadTrans t1, MonadTrans t2) => MonadTrans (:> t1 t2) 
(MonadTrans t1, MonadTrans t2, Monad m) => Monad (:> t1 t2 m) 

leftL :: :> t1 t2 m a -> t1 (t2 m) aSource

rightL :: t1 (t2 m) a -> :> t1 t2 m aSource

returnZ :: forall a t1 t2 m. (MonadTrans t1, MonadTrans t2, Monad m) => a -> (t1 :> t2) m aSource

bindZ :: forall a b t1 t2 m. (MonadTrans t1, MonadTrans t2, Monad m) => (t1 :> t2) m a -> (a -> (t1 :> t2) m b) -> (t1 :> t2) m bSource

liftZ :: forall a t1 t2 m. (MonadTrans t1, MonadTrans t2, Monad m) => m a -> (t1 :> t2) m aSource

unliftZ :: forall m n a t1 t2. (Monad m, Monad n, MonadTrans t1, MonadTrans t2) => (forall f. Functor f => (forall x. (t1 :> t2) m x -> m (f x)) -> n (f a)) -> (t1 :> t2) n aSource

newtype FComp f1 f2 a Source

Constructors

FComp 

Fields

runFComp :: f1 (f2 a)
 

Instances

(Functor f1, Functor f2) => Functor (FComp f1 f2)