lambda lifting

lambda lifting

A program transformation to remove free variables. An expression containing a free variable is replaced by a function applied to that variable. E.g.

f x = g 3 where g y = y + x

x is a free variable of g so it is added as an extra argument:

f x = g 3 x where g y x = y + x

Functions like this with no free variables are known as supercombinators and are traditionally given upper-case names beginning with "$". This transformation tends to produce many supercombinators of the form f x = g x which can be eliminated by eta reduction and substitution. Changing the order of the parameters may also allow more optimisations. References to global (top-level) constants and functions are not transformed to function parameters though they are technically free variables.

A closely related technique is closure conversion. See also Full laziness.
This article is provided by FOLDOC - Free Online Dictionary of Computing (foldoc.org)
Mentioned in
Copyright © 2003-2025 Farlex, Inc Disclaimer
All content on this website, including dictionary, thesaurus, literature, geography, and other reference data is for informational purposes only. This information should not be considered complete, up to date, and is not intended to be used in place of a visit, consultation, or advice of a legal, medical, or any other professional.