Defunctionalization
Defunctionalization (shorthand: d17n) is an automatic, whole-program transformation that removes higher-order functions from a functional program.
D17n can be used as an implementation technique: applying it to a higher-order definitional interpreter leads to a program that looks a lot like an abstract machine.