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!
Abstract
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 here, and here is
a bibtex entry.
John Hughes
Last modified: Fri Aug 9 10:32:16 MET DST 1996