Создание O (1) -памяти, доступной для итераций из исходного объекта и функция, которая генерирует следующий объект, в Scala

Мне нужен удобный способ создания 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.

6
задан Thomas Mueller 24 September 2010 в 05:10
поделиться