hermit-0.3.2.0: Haskell Equational Reasoning Model-to-Implementation Tunnel

Safe HaskellNone

HERMIT.Dictionary.AlphaConversion

Contents

Synopsis

Alpha-Renaming and Shadowing

externals :: [External]Source

Externals for alpha-renaming.

Alpha-Renaming

alphaR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => Rewrite c HermitM CoreSource

Alpha rename any bindings at this node. Note: does not rename case alternatives unless invoked on the alternative.

alphaLamR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => Maybe Name -> Rewrite c HermitM CoreExprSource

Alpha rename a lambda binder. Optionally takes a suggested new name.

alphaCaseBinderR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => Maybe Name -> Rewrite c HermitM CoreExprSource

Alpha rename a case binder. Optionally takes a suggested new name.

alphaAltWithR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => [Name] -> Rewrite c HermitM CoreAltSource

Rename the variables bound in a case alternative with the given list of suggested names.

alphaAltVarsR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => [Var] -> Rewrite c HermitM CoreAltSource

Rename the specified variables in a case alternative.

alphaAltR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => Rewrite c HermitM CoreAltSource

Rename all identifiers bound in a case alternative.

alphaCaseR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => Rewrite c HermitM CoreExprSource

Rename all identifiers bound in a case expression.

alphaLetWithR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => [Name] -> Rewrite c HermitM CoreExprSource

Rename the identifiers bound in a Let with the given list of suggested names.

alphaLetVarsR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => [Var] -> Rewrite c HermitM CoreExprSource

Rename the specified variables bound in a let.

alphaLetR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => Rewrite c HermitM CoreExprSource

Rename all identifiers bound in a Let.

alphaProgConsWithR :: (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c) => [Name] -> Rewrite c HermitM CoreProgSource

Rename the identifiers bound in the top-level binding at the head of the program with the given list of suggested names.

Shadow Detection and Unshadowing

unshadowR :: forall c. (ExtendPath c Crumb, ReadPath c Crumb, AddBindings c, BoundVars c) => Rewrite c HermitM CoreSource

Rename local variables with manifestly unique names (x, x0, x1, ...). Does not rename top-level definitions.

visibleVarsT :: (BoundVars c, Monad m) => Translate c m CoreExpr VarSetSource

List all visible identifiers (in the expression or the context).

freshNameGenT :: (BoundVars c, Monad m) => Maybe Name -> Translate c m CoreExpr (String -> String)Source

If a name is provided replace the string with that, otherwise modify the string making sure to not clash with any visible variables.

freshNameGenAvoiding :: Maybe Name -> VarSet -> String -> StringSource

Use the optional argument if given, otherwise generate a new name avoiding clashes with the list of variables.

replaceVarR :: (Injection a Core, MonadCatch m) => Var -> Var -> Rewrite c m aSource

Replace all occurrences of a specified variable. Arguments are the variable to replace and the replacement variable, respectively.