Recent discussion: https://news.ycombinator.com/item?id=42999672
Do check out the articles in the top most comment.. about how tail call optimization gets you faster interpreters.
It completely eliminates the overhead of function calls in the generated machine code while you still your code modularly using functions.
replies(2):