A recursive descent Lisp interpreter