Safe Haskell | None |
---|

Rewriting combinators and traversals

- allR :: forall m. (Functor m, Monad m, Fresh m) => Bool -> Transform m -> Transform m
- (>->) :: Monad m => Transform m -> Transform m -> Transform m
- topdownR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform m
- unsafeTopdownR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform m
- bottomupR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform m
- unsafeBottomupR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform m
- upDownR :: (Functor m, Monad m) => Rewrite m -> Rewrite m
- unsafeUpDownR :: (Functor m, Monad m) => Rewrite m -> Rewrite m
- (!->) :: Monad m => Rewrite m -> Rewrite m -> Rewrite m
- repeatR :: Monad m => Rewrite m -> Rewrite m

# Documentation

:: forall m . (Functor m, Monad m, Fresh m) | |

=> Bool | Freshen variable references in abstracted terms |

-> Transform m | The transformation to apply to the subtrees |

-> Transform m |

Apply a transformation on the subtrees of an term

(>->) :: Monad m => Transform m -> Transform m -> Transform mSource

Apply two transformations in succession

topdownR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform mSource

Apply a transformation in a topdown traversal

unsafeTopdownR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform mSource

Apply a transformation in a topdown traversal. Doesn't freshen bound variables

bottomupR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform mSource

Apply a transformation in a bottomup traversal

unsafeBottomupR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform mSource

Apply a transformation in a bottomup traversal. Doesn't freshen bound variables

upDownR :: (Functor m, Monad m) => Rewrite m -> Rewrite mSource

Apply a transformation in a bottomup traversal, when a transformation succeeds in a certain node, apply the transformation further in a topdown traversal starting at that node.

unsafeUpDownR :: (Functor m, Monad m) => Rewrite m -> Rewrite mSource

Apply a transformation in a bottomup traversal, when a transformation succeeds in a certain node, apply the transformation further in a topdown traversal starting at that node. Doesn't freshen bound variables