Portability | ghc |
---|---|
Stability | unstable |
Maintainer | Andy Gill <andygill@ku.edu> |
- data Translate m dec exp1 exp2
- apply :: (Monoid dec, Monad m) => Translate m dec exp1 exp2 -> exp1 -> RewriteM m dec exp2
- runTranslate :: (Monoid dec, Monad m) => Translate m dec exp res -> dec -> exp -> m (Either String (res, dec, Int))
- transparently :: (Monoid dec, Monad m) => Translate m dec exp1 exp2 -> Translate m dec exp1 exp2
- translate :: (Monoid dec, Monad m) => (exp1 -> RewriteM m dec exp2) -> Translate m dec exp1 exp2
Documentation
data Translate m dec exp1 exp2 Source
Translate
is a translation or strategy that translates between exp1
and exp2
, with the posiblity of failure,
and remembers identity translations.
runTranslate :: (Monoid dec, Monad m) => Translate m dec exp res -> dec -> exp -> m (Either String (res, dec, Int))Source
runTranslate
executes the translation, returning either a failure message,
or a success and the new parts of the environment.
transparently :: (Monoid dec, Monad m) => Translate m dec exp1 exp2 -> Translate m dec exp1 exp2Source
transparently
marks a translate
(or rewrite
) as transparent, that is the identity status
of any internal applications of apply
is preserved across the translate.
Note: transparently $ translate $ \ e -> return e
is an identity rewrite.