LINUX.ORG.RU

История изменений

Исправление dave, (текущая версия) :

Да элементарно обходится дерево. Действительно, получается что-то среднее между итератором .NET и ячейкой cons из лиспа. Просто думай о enum-cons как о чем-то близком к функции cons. Только первая сущность - макрос.

Там создается аналог ячейки cons, только вместо ячейки cdr внутри находится функция (ленивость, задержка и т.п.). Подобно итераторам, эта функция перевычисляется при обходе. Но если очень хочется, то можно и мемоизировать с помощью готовой библиотечной функции, и тогда будет то, что называют потоком (как в clojure, например).

З.Ы. ну и этот автокорректор сафари!

Исходная версия dave, :

Да элементарно обходится дерево. Действительно, получается что-то среднее между итератором .NET и ячейкой cons из листа. Просто думай о enum-cons как о чем-то близком к функции cons. Только первая сущность - макрос.

Там создается аналог ячейки cons, только вместо ячейки cdr внутри находится функция (леность, задержка и т.п.). Подобно итераторам, эта функция перевычисляется при обходе. Но если очень хочется, то можно и мемоизировать с помощью готовой библиотечной функции, и тогда будет то, что называют потоком (как в clojure, например).