FULLY LAZY LAMBDA LIFTING


Meaning of FULLY LAZY LAMBDA LIFTING in English

John Hughes's optimisation of lambda lifting to give full laziness . Maximal free expression s are shared to minimise the amount of recalculation. Each inner sub-expression is replaced by a function of its maximal free expressions (expressions not containing any bound variable ) applied to those expressions. E.g.

f = \ x . (\ y . (+) (sqrt x) y)

((+) (sqrt x)) is a maximal free expression in (\ y . (+) (sqrt x) y) so this inner abstraction is replaced with

(\ g . \ y . g y) ((+) (sqrt x))

Now, if a partial application of f is shared, the result of evaluating (sqrt x) will also be shared rather than re-evaluated on each application of f. As Chin notes, the same benefit could be achieved without introducing the new higher-order function , g, if we just extracted out (sqrt x).

This is similar to the code motion optimisation in procedural language s where constant expressions are moved outside a loop or procedure.

(1994-12-01)

FOLDOC computer English dictionary.      Английский словарь по компьютерам FOLDOC.