Почему мне кажется что хвостовая рекурсия это ненадежный хак? — такой частный случай рекурсии при котором не происходит ошибка переполнения стека.
Что ее легко заменить на не-хвостовую рекурсию, не заметить этого и потом ловить переполнения стека на каждом 100м запуске программы?