Andrew Birkett's nobugs.org
This is oclisp (ocaml lisp), which is a basic lisp interpreter inspired mainly by emacs lisp. It is provide only symbol atoms (no integers, string etc) and cons cells. It is dynamically scoped, and garbage collection is piggybacked from the ocaml runtime. It was written to explore the lisp language, and to evaluate some of the claims made by lisp fans!
You can’t use it for much, because it’s so simple. It’s probably most useful for learning how a lisp interpreter works (which is why I wrote it in the first place). As an example of what you can do, here’s a sample session, with user input followed by ‘=>’ then the result:
(car '(a b c)) => a (cdr '(a b c)) => (b c) (cons 'a 'b) => (a . b) (setq b 'foo) => foo b => foo (defun foo (x) x) => foo (foo 'a) => a (cond (nil 'a) (t 'b)) => b (defun length (l) (if (equal l nil) nil (cons 't (length (cdr l))))) => length (length nil) => nil (length '(a)) => (t) (length '(a b c d e)) => (t t t t t) (let ((x 'a) (y '(b c))) (cons x y)) => (a b c) (setq f 'cons) => cons (funcall f 'a nil) => (a)