Например, если у вас есть миллионы элементов, но обычно вам нужно только изучить первый миллион (например, если вы накапливаете сумму и насыщаете ее каким-то максимальным значением, или у вас есть какая-то другая сложная структура данных, которую вы строите, но вы fini sh после изучения первых M элементов). FoldLeft всегда заставляет вас перебирать всю последовательность. В идеале, вы могли бы предоставить предикат, который позволит foldLeft знать, что вы закончили.
Если scanLeft оценивается лениво (?), Возможно, scanLeft вместе с find (find first valid element) может выполнить sh этого. Я полагаю, что что-то подобное будет работать в Haskell, но не уверен насчет Scala.
numbers.scanLeft(0)((a, b) => a + b).find(_ >= 100)
Так что, если numbers = List (100,0,9,10), то scanLeft будет смотреть только на первый элемент.