Deserves an upvote, if only for using the correct term "tail call elimination", rather than the often used "tail call optimization". It is not an optimization, as its existence can change a correct well defined program between "works" and "not works".