Lambda lifting
Lambda lifting is a meta-process that restructures a computer program so that functions are defined independently of each other in a global scope. An individual lift transforms a local function (subroutine) into a global function. It is a two step process, consisting of: