Higher-order Functions
Key to everything (DSLs, ADLs, …) is abstraction
Functional abstraction is simple, powerful, and well-understood
Higher-order functions have a strong mathematical foundation
Functional languages support a calculus of equational reasoning