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