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.