Functional languages such as OCaml rely heavily on recursive functions. However, such functions can lead to memory over consumption or, when handling large datasets, to stack overflows.
Tail recursion is an important source of optimization in such cases. It allows a program to drop the caller context when the recursive call is the last of the function.