Portability | ghc |
---|---|

Stability | unstable |

Maintainer | Andy Gill <andygill@ku.edu> |

# Documentation

rewrite :: (Monoid dec, Monad m) => (exp1 -> RewriteM m dec exp1) -> Rewrite m dec exp1Source

`rewrite`

is our primitive way of building a Rewrite,
where if the rewrite is successful it is automatically marked as a non-identity rewrite.

`rewrite $ \ _ e -> return e`

*is not* an identity rewrite.

runRewrite :: (Monoid dec, Monad m) => Rewrite m dec exp -> dec -> exp -> m (Either String (exp, dec, Int))Source

`runRewrite`

executes the rewrite, returning either a failure message,
or a success and the new parts of the environment.