An interesting technique for the implementation of functional
languages is the use of combinators, special functionals on
which all abstractions can be expressed. This project page is
intended to collect all of my projects on combinator-based
implementations of functional languages.

Lazy-L

Currently, I've only made one functional language that uses
combinator graph reduction techniques: Lazy-L. This is
basically an implementation of Alonzo Church's pure untyped
lambda calculus using the S, K, and I combinators. Functions
are all there is in here: everything must be expressed
in terms of functions. To express numbers you need to use
Church
numerals, which are expressions of numbers as functions.
To express other data types, encodings of the data must be found
in terms of functions. A methods for expressing various types
of data in the pure lambda calculus can be found in Chapter 3 of
John Harrison's course on Functional Programming.

Other than a teaching vehicle for students learning the lambda
calculus or combinator logic, it can also be used, with a little
tweaking, as a compiler from the lambda calculus to
Unlambda. See the README file in the
distribution for information on how to use it.

You need Objective Caml to
build and use this interpreter.

Download

You can get the source for lazy-l from the
SourceForge Project Page. I do not maintain any binary
distributions at this time.

Feedback

I want your feedback on these programs. Email me here for any questions or comments.