I do not have a reference on tail call optimizations, however, I have
enclosed a reference to a paper which gives a technique for producing
properly tail recursive implementations of programming languages. For
some languages such as Scheme, treating tail calls specially is not an
optional optimization, but a correctness requirement. In addition to
looking at the referenced paper, I suggest you search using the
keywords "properly tail recursive".