“Why Functional Programming Matters” is an essay by John Hughes, a hosted copy of which is available on his Chalmers University page, that makes the case for functional programming on engineering grounds rather than mathematical elegance. It is one of the most widely cited arguments for the functional style.
Hughes’s central claim is that the value of functional programming lies in better modularity. He argues that two features in particular, higher-order functions and lazy evaluation, provide new kinds of glue for combining small program pieces into larger ones. Higher-order functions let common patterns of computation be abstracted and reused, while lazy evaluation lets a program be split into a producer and a consumer that run as if interleaved, so that pieces which would be hard to separate in other languages become independent and reusable.
The essay deliberately frames functional programming in terms a working programmer cares about, modularity and reuse, rather than purity for its own sake. That framing helped move functional ideas out of academic circles and influenced the design of languages such as Haskell.