Scheme and Functional Programming

December 5, 2000


In functional programming, you get work done by evaluating expressions that return results. Functional programming is notable for what is missing. There is no assignment: each evaluation returns a new object, you never change the value of an existing object. There is (usually) no sequential top-to-bottom or right-to-left evaluation order: the order in which subexpressions are evaluated does not matter. Despite these apparent limitations, functional programming is surprisingly powerful. The limitations make make certain programming techniques possible, prevent whole classes of errors, and can make programs easy to analyze.

Notable characteristics of functional programming in Scheme are:

Most other programming languages provide some of these features, but in Scheme (and other Lisp dialects) they are particularly convenient and work together most powerfully.

It is also possible to program write non-functional (not dysfunctional!) programs in Scheme. Scheme provides input-output (side effects), assignment (set! etc.), sequence (begin etc.), and even an iteration construct (do).


Jon Jacky, jackyj@evergreen.edu