This directory contains an Unlambda interpreter written in Scheme.  As
of Unlambda version 1, this was the only Unlambda interpreter.  It
also contains the unlambdaify program.  The interpreter was compiled
using bigloo (a free Scheme compiler which you can get from
ftp://kaolin.unice.fr/pub/Bigloo/ ).  Two compiled versions, one for
i686-gnu-linux with glibc 2.1.1 at least and one for
sparc-sun-solaris2.5 (has been tested on Solaris 2.5, 2.6 and 7) are
also included (they are statically compiled with the bigloo
libraries).


If you use bigloo, to compile the program, run

  bigloo -call/cc -o unlambda unlambda-bigloo.scm

and then type

  ./unlambda -h

to get help.  (Warning: option parsing is an ugly kludge, and is
probably very broken.)


If you use guile, run

  guile -l unlambda.scm -c '(main)'

and feed the Unlambda program on the standard input.

If your Scheme system is something else, load the unlambda.scm file
and run (main).


*Warning*: bigloo does not conform to the Revised^n Report on Scheme
as it is not properly tail-recursive in all cases.  Rather, it relies
on gcc for tail-recursiveness in most common situations.  This means
that if your Unlambda interpreter was compiled with bigloo (and even
more so if bigloo was not compiled with gcc), the interpreter will not
be properly tail-recursive in all cases.  Explicit examples have been
found where the tail-recursiveness breaks (i.e. the Unlambda program
should simply spin in an idle loop, and actually the interpreter's
memory explodes).
