Почему компилятор не переводит Scala
(1,2,3,4,5,6).foldRight(10)(_ * _)
эквивалент Java
final int[] intArray = new int[]{1,2,3,4,5,6};
int accumulator = 10;
for(int i = intArray.legth - 1; i >=0; i--) {
accumulator = intArray[i] * accumulator;
}
Вопрос: почему foldLeft и reduceLeft являются хвостовыми рекурсивными, но их правые счета не являются?
Вот ссылки, в которых говорится, что правые не являются хвостовыми рекурсивными. Я спрашиваю, почему это так.
Откуда вы знаете, когда использовать fold-left и когда использовать fold-right?