Our ability to decompose a problem into parts depends directly on our ability to glue solutions together. To assist modular programming, a language must provide good glue.
Functional programming languages provide two new kinds of glue – higher-order functions and lazy evaluation.