Welcome to funlisp’s documentation!

funlisp is a small, simple, easy-to-embed scripting language written in C. It is a dialect of lisp, but doesn’t adhere to any particular standard. This documentation contains information for those looking to learn the language, as well as those looking to embed and extend it.

You can get started by cloning the repository from GitHub, and then compiling the main program:

$ git clone https://github.com/brenns10/funlisp
$ make bin/funlisp
$ bin/funlisp
> (define hello (lambda () (print "hello world")))
<lambda hello>
> (hello)
hello world

If you do not have the a POSIX.2 system, or if you cannot install the Readline library (on which the main program depends), you can use the simpler (but less feature-rich) programs bin/repl and bin/runfile.

From there, you can evaluate some arithmetic and write some lambdas! See the table of contents below for guidance on the language, and how to embed the interpreter in your program. There is also some (limited) documentation on the internals of the interpreter, to help interested readers of my code (and probably me someday).

Visit the repository for more information, to view the source, to report bugs, or even to begin contributing!

Indices and tables