Adding tail call optimization to a Lisp interpreter in Ruby | Hacker News Reader