Мне нужен удобный способ создания Iterable
с учетом начального объекта и функции для создания следующего объекта из текущего, который потребляет O (1) памяти (т. Е. не кэширует старые результаты; если вы хотите повторить итерацию во второй раз, функция должна быть применена снова).
Не похоже, что для этого есть поддержка библиотек. В Scala 2.8 метод scala.collection.Iterable.iterate
имеет сигнатуру
def iterate [A] (start: A, len: Int)(f: (A) ⇒ A) : Iterable[A]
, поэтому он требует, чтобы вы заранее указали, сколько приложений с повторяющимися функциями вам интересны, и мое понимание документации в том, что Iterable.iterate
фактически вычисляет все эти значения немедленно. С другой стороны, метод scala.collection.Iterator.