The appearance of iterators in an object-oriented language appears to be inversely related to the power of the language's intrinsic control structures. Iterator classes are used for the sole purpose of enumerating the elements of an abstract collection class without revealing its implementation. We find that the availability of higher-order functions and function closures eliminates the need for these ad hoc iterator classes, in addition to providing the other benefits of "mostly functional programming".
Shriram Khrishnamurthi's presentation on the beauty of Scheme and functional programming languages. This presentation was what sold me on Scheme and Functional Programming. You have to watch it. This is probably my favorite presentation of all time!
The motivation for this tutorial is that there are heaps of resources on JavaScript programming but only few even mention the functional features of JavaScript. In this tutorial I will explain the basics only without going into detail about other functional languages or even the lambda-calculus.
Recursion is a tool not often used by imperative language developers, because it is thought to be slow and to waste space, but as the author demonstrates, there are several techniques that can be used to minimize or eliminate these problems. He introduces the concept of recursion and tackle recursive programming patterns, examining how they can be used to write provably correct programs. Examples
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
Computer science is the womanizer, and math is the pure-hearted girl he won't call the next day.
Class webpage on Advanced Functional Programming and related reading materials.
The Implementation of Functional Programming Languages
Simon Peyton Jones, published by Prentice Hall, 1987.
Approaching functional programming from a procedural mindset
Here is a list of functional programs applied to real-world tasks. The main criterion for being real-world is that the program was written primarily to perform some task, not primarily to experiment with functional programming. Functional is used in the broad sense that includes both `pure' programs (no side effects) and `impure' (some use of side effects). Languages covered include CAML, Clean, E