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.