Annotations-0.2.1: Constructing, analyzing and destructing annotated trees

Safe HaskellNone
LanguageHaskell98

Annotations.MultiRec.Yield

Synopsis

Documentation

class Monad m => MonadYield m where Source

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 ix Source

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, Functor m) => Applicative (YieldT x fam m) 
(Monad m, HFunctor fam (PF fam), EqS fam, Fam fam) => MonadYield (YieldT x fam m) 
type YieldFam (YieldT x fam m) = fam 
type AnnType (YieldT x fam m) = x 

type Yield x fam = YieldT x fam Identity Source

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