Annotations-0.2: Constructing, analyzing and destructing annotated trees

Safe HaskellNone

Annotations.MultiRec.Yield

Synopsis

Documentation

class Monad m => MonadYield m whereSource

Monads that allow yielding recursively annotated values.

Associated Types

type YieldFam m :: * -> *Source

Yielded values have types in this datatype family.

type AnnType m :: *Source

The type of the annotation.

Methods

yield :: YieldFam m ix -> AnnType m -> ix -> m ixSource

Yields a value with its annotation.

Instances

(Monad m, HFunctor fam (PF fam), EqS fam, Fam fam) => MonadYield (YieldT x fam m) 

data YieldT x fam m a Source

The Yield transformer. Allows yielding generic values in family fam with annotations of type x.

Instances

MonadTrans (YieldT x fam) 
Monad m => Monad (YieldT x fam m) 
Functor m => Functor (YieldT x fam m) 
(Monad m, HFunctor fam (PF fam), EqS fam, Fam fam) => MonadYield (YieldT x fam m) 

type Yield x fam = YieldT x fam IdentitySource

Yield over the identity monad.

runYield :: EqS fam => fam a -> Yield x fam a -> Maybe (AnnFix x fam a)Source

runYieldG :: Yield x fam a -> (a, Maybe (AnyAnnFix x fam))Source

runYieldT :: (Monad m, EqS fam) => fam a -> YieldT x fam m a -> m (Maybe (AnnFix x fam a))Source

runYieldTG :: Monad m => YieldT x fam m a -> m (a, Maybe (AnyAnnFix x fam))Source