I've rewritten the eval() of Trifle lisp to use a stack: https://github.com/Wilfred/trifle/pull/3 It was an adventure, and highly educational!