| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Cubix.Language.Parametric.Semantics.CfgInserter
Documentation
data EmptyInsertOkay Source #
Constructors
| EmptyInsertOkay | |
| EmptyInsertNotOkay |
class Monad m => MonadCfgInsertion (m :: Type -> Type) (fs :: Signature) l where Source #
Minimal complete definition
dominatingPrependFirstOpts, dominatingPrependLastOpts, dominatingAppendFirstOpts, dominatingAppendLastOpts, firstPredPrependLastOpts, restPredPrependLastOpts
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
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 #