Suggested sources
- H P Barendregt The Lambda Calculus. Exhaustive, high level.
- J R Hindley and J P Seldin Introduction to Combinators and
Lambda-Calculus. You'll need to dig for the relevant parts.
- G E Revesz Lambda-calculus, Combinators and Functional
Programming.
- A Church The Calculi of Lambda-Conversion
- A Field and P Harrison Functional Programming. Some chapters
covering λ calculus and combinator calculus.
- The Web. If you can't find material relevant to this course on the Web
you don't deserve to be a Computer Scientist!
- Structure and Interpretation of
Computer Programs by Abelson and Sussman. Required reading by anyone
interested in Computer Science. Full text now online
If you happen to find To Mock a Mockingbird by Raymond Smullyan do
tell me what it's like.
Lecture notes for
CM20167.
These notes were written for my benefit, not
yours, so there may be differences in their content and what I taught. There
are definitely errors, too.
This course has 25% coursework which involves programming in Lisp. It is
good to get some practice on these simple Lisp
Exercises. There are some sample solutions
to the Exercises, but don't cheat yourself by peeking before you've tried
for yourself. (Further exercise: find and fix the bugs in the solutions!)
The Coursework Assignment.
Euscheme,
and some
introductory notes.
Euscheme is an interpreter for the
EuLisp
language. The name
"Euscheme" is designed to confuse, as it has very little to do
with Scheme.
If anyone can port Euscheme to W2K/XP I'd be pleased to hear from you.
Addendum:
A MacOS X version is available.
Addendum:
Date: Fri, 15 Oct 2004 15:55:48 +0100
From: Mark campbell
To: rjb
Subject: Euscheme on XP
I found a quick workaround for getting Euscheme going in windows. The Dos
version (0.35) in a DosBox (http://dosbox.sourceforge.net) window seems to run
ok - got it going on a bucs machine this afternoon. Not a port (as I have no
idea even how to start that) but it seems to work and is easy to get going.
Mark Campbell
Addendum: A version compiled for XP directly,
courtesy of Chris Archer. Read the readme.txt file.
Some limbering-up exercises in
β-reduction. And answers, but don't
peek!
Some code for Church Numerals in Lisp.
My Lisp course notes. There are definitely
bugs and typos in these notes, so beware!
Other bits and pieces:
Past Papers
"Without understanding functional programming, you can't invent MapReduce,
the algorithm that makes Google so massively scalable. The terms Map and Reduce
come from Lisp and functional programming. MapReduce is, in retrospect, obvious
to anyone who remembers from their [...] programming class that purely
functional programs have no side effects and are thus trivially
parallelizable."
Joel Spolsky
"Lisp is worth learning for the profound enlightenment experience you will
have when you finally get it; that experience will make you a better programmer
for the rest of your days, even if you never actually use Lisp itself a
lot."
Eric Raymond, "How to Become a Hacker"
From the Erlang FAQ:
"The traditional ways of slowing down projects, like adding armies of
consultants halfway through, spending a year writing detailed design
specifications before any code is written, rigidly following a waterfall model,
spreading development across several countries and holding team meetings to
decide on the colour of the serviettes used at lunch work just as well for
Erlang as for other languages."