I wanted to understand compilers better so I wrote one for lisp using ruby