Mutual Recursion

Tail call optimization for mutually (indirectly) and directly recursive functions in Ruby.

The current design uses a trampoline. However, it is implemented in a way that still allows a tail recursive function to easily return a Proc as its terminal value.

examples