cubix
Safe HaskellNone
LanguageHaskell2010

Cubix.Language.Parametric.Semantics.CfgInserter

Documentation

class Monad m => MonadCfgInsertion (m :: Type -> Type) (fs :: Signature) l where Source #

Methods

dominatingPrependFirstOpts :: TermLab fs i -> TermLab fs l -> EmptyInsertOkay -> m () Source #

dominatingPrependLastOpts :: TermLab fs i -> TermLab fs l -> EmptyInsertOkay -> m () Source #

dominatingAppendFirstOpts :: TermLab fs i -> TermLab fs l -> EmptyInsertOkay -> m () Source #

dominatingAppendLastOpts :: TermLab fs i -> TermLab fs l -> EmptyInsertOkay -> m () Source #

firstPredPrependLastOpts :: TermLab fs i -> TermLab fs l -> EmptyInsertOkay -> m () Source #

restPredPrependLastOpts :: TermLab fs i -> TermLab fs l -> EmptyInsertOkay -> m () Source #

dominatingPrependFirst :: TermLab fs i -> TermLab fs l -> m () Source #

Insert a node in places that dominate all control paths to some other node

dominatingPrependLast :: TermLab fs i -> TermLab fs l -> m () Source #

dominatingAppendFirst :: TermLab fs i -> TermLab fs l -> m () Source #

dominatingAppendLast :: TermLab fs i -> TermLab fs l -> m () Source #

firstPredPrependLast :: TermLab fs i -> TermLab fs l -> m () Source #

restPredPrependLast :: TermLab fs i -> TermLab fs l -> m () Source #

Instances

Instances details
MonadCfgInsertion m fs l => MonadCfgInsertion (MaybeT m) fs l Source # 
Instance details

Defined in Cubix.Language.Parametric.Semantics.CfgInserter

MonadCfgInsertion m fs l => MonadCfgInsertion (ReaderT s m) fs l Source # 
Instance details

Defined in Cubix.Language.Parametric.Semantics.CfgInserter

Monad m => MonadCfgInsertion (CfgInserterT fs l m) fs l Source # 
Instance details

Defined in Cubix.Language.Parametric.Semantics.CfgInserter

type CfgInserterT (fs :: Signature) l (m :: Type -> Type) = WriterT [Action fs l] m Source #

performCfgInsertions :: forall l (fs :: Signature) m i. (MonadAnnotater Label m, InsertAt fs l, All HTraversable fs, All HFunctor fs, All HFoldable fs) => ProgInfo fs -> RewriteM (CfgInserterT fs l m) (TermLab fs) i -> RewriteM m (TermLab fs) i Source #