Module let_motion

Source

EnumsΒ§

Binding πŸ”’
A stand in for the types of bindings we might encounter.

FunctionsΒ§

assert_letrec_major πŸ”’
Asserts that expr in β€œLetRec-major” form.
assert_no_lets πŸ”’
extract_bindings πŸ”’
Extracts exposed bindings into bindings.
harvest_non_recursive πŸ”’
Harvest any safe-to-lift non-recursive bindings from a LetRec expression.
harvest_nonrec_suffix πŸ”’
Harvest any safe-to-lower non-recursive suffix of binding from a LetRec expression.
hoist_bindings πŸ”’
Hoist all exposed bindings to the root of the expression.
post_order_harvest_lets πŸ”’
Performs a post-order traversal of the LetRec nodes at the root of an expression.
promote_let_rec πŸ”’
Promotes all Let and LetRec nodes to the roots of their expressions.