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

Safe HaskellSafe-Infered

Language.HERMIT.Primitive.Local.Let

Contents

Synopsis

Rewrites on Let Expressions

externals :: [External]Source

Externals relating to Let expressions.

letIntro :: Name -> RewriteH CoreExprSource

e => (let v = e in v), name of v is provided

letFloatApp :: RewriteH CoreExprSource

(let v = ev in e) x ==> let v = ev in e x

letFloatArg :: RewriteH CoreExprSource

f (let v = ev in e) ==> let v = ev in f e

letFloatExpr :: RewriteH CoreExprSource

Float a Let through an expression, whatever the context.

letFloatLetTop :: RewriteH CoreProgramSource

NonRec v (Let (NonRec w ew) ev) : bds ==> NonRec w ew : NonRec v ev : bds

letToCase :: RewriteH CoreExprSource

let v = ev in e ==> case ev of v -> e