Functional Programming

Philip Wadler

Philip Wadler
Chapter in
The Logic Programming Paradigm: A 25 Year Perspective,
Shakertown, April 1998. Springer-Verlag.
(This paper combines the February and August 1998 columns
for Sigplan Notices, ''An angry half dozen'' and ''Why no one uses
functional languages''.)

Logic programming and functional programming row in the same boat.
Methods used to achieve success with one often transpose to the other,
and both face similar obstacles. Here I offer a compendium of success
stories for functional programs, followed by a list of obstacles
to more widespread use of functional programming, in the belief that
much of this experience is relevant to logic programmers. This material
first appeared as columns in ACM SIGPLAN Notices.
The final section contains a few remarks specific to the relations
between functional and logic programming.

This column lists eight reasons why functional languages are not more
widely used (compatibility, libraries, portability, availability,
packagability, tools, training, and popularity) and two non-reasons
(performance and ``they just don't get it''), then draws four lessons.

Column, SIGPLAN Notices 33(2):25-30, February 1998.
[NB. Table of contents on the cover of this issue is wrong.]

``Have you used it in anger yet?''

The time is a dozen years ago, the place is Oxford, and my fellow
postdoc has just scrutinized my new bike. He's admired the chrome,
checked the gears, noted the Kryptonite lock. Now he wants to know if
I've used it to serious purpose. Gleaming chrome is well and good,
but will it run you through the woods?

``Have you used it in anger yet?''

Having read the title of this column, you may have just asked the same
question, though perhaps in different words. You've scrutinized
functional languages. You've admired the elegance of lambda calculus,
checked the benchmarks from the compilers, noted the security provided
by strong typing. Now you want to know if they have been used to
serious purpose. Mathematical elegance is well and good, but
will it run that mission-critical system?

The Java phenomenon means that programmers that once laughed at
garbage collection and strong typing have started to use it daily, and
this opens up a wonderful opportunity for the functional programming
community....