Safe Haskell | None |
---|

Transformation process for normalization

# Documentation

normalization :: NormRewriteSource

Normalisation transformation

Simple cleanup transformation, currently only inlines "Wrappers"

representable :: NormRewriteSource

Unsure that functions have representable arguments, results, and let-bindings

simplification :: NormRewriteSource

Brings representable function in the desired normal form:

- Only top-level lambda's
- Single Lambda-bound top-level Let-binding, where the body is a variable reference
- Modified ANF (constants are not let-bound, non-representable arguments to primitives are not let-bound)
- All let-bindings are representable

doInline :: String -> NormRewrite -> NormRewriteSource

Perform an inlining transformation using a bottomup traversal, and commit inlined function names to the inlining log/cachce

repeatBottomup :: [(String, NormRewrite)] -> NormRewriteSource

Repeatedly apply a set of transformation in a bottom-up traversal