I'm working on a lisp interpreter right now, so this should be useful for reference.
One question, how would I go about implementing tail call recursion? I's assume that's a pretty important thing to have in lisp (or any functional language for that matter). I'm working in ruby, if that matters.