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.

< Previous Terms |
Terms Containing lambda lifting |
Next Terms > |

Lambada-Calculus LAMBDA lambda abstraction lambda-calculus lambda expression |
closure conversion free variable full laziness fully lazy lambda lifting |
LambdaMOO Lambda Prolog lamer LAMINA lamp-post error |

WeWork Office Space & Coworking

Address: 115 Broadway, New York, NY 10006

Hours: Opens 9AM - 6PM

Phone: +1 646-396-3519

shape

shape