See ProperTailRecursion.