# Summarise Contribution & Motivation - Both CPS and ANF inhibit some optimisations - Aim to get benefits of both - Extend direct-style lambda calculus by adding join points - How to infer join points - Join points can be recursive which gives new optimisation - Show that approach works in GHC # Methodology - Define new intermediate language Fj - Perform single pass to find let bindings that are join points - These are let bound functions that will never be captured in closure - This is simpler than contification because they only look for tail calls # Critical Assessment - Achieves big reduction in allocations for some programs - Other programs lose out on potential optimisations - Transformations can be applied broadly, even to call by value languages