Why Functional Programming Matters
This paper dates from 1984, and circulated as a Chalmers memo for many years.
Slightly revised versions appeared in 1989 and 1990 in the Computer Journal
and the Year of Programming. This version is based on the original Chalmers
memo nroff source, lightly edited for LaTeX and to bring it closer to
the published versions. Please excuse the slightly old-fashioned type-setting,
and the fact that the examples are not in Haskell!
As software becomes more and more complex, it is more and more important
to structure it well. Well-structured software is easy to write, easy to
debug, and provides a collection of modules that can be re-used to reduce
future programming costs. Conventional languages place conceptual limits
on the way problems can be modularised. Functional languages push those
limits back. In this paper we show that two features of functional
languages in particular,
higher-order functions and lazy evaluation, can contribute
greatly to modularity. As examples, we manipulate lists and trees,
program several numerical algorithms, and implement the alpha-beta
heuristic (an algorithm from Artificial Intelligence used in game-playing
programs). Since modularity is the key to successful programming,
functional languages are vitally important to the real world.
The paper is available as postscript and pdf, and here is
a bibtex entry. There are even translations into japanese, by Nobuo Yamashita, and chinese, by ShiningRay.
Last modified: Thu Jan 10 22:33:14 MET 2002