Поэлементное раскрытие потока по запросу
Поток сохраняет первое значение сразу и откладывает вычисление, способное породить остальную часть последовательности.
Как конечный запуск может использовать последовательность без последнего элемента?
- Представление потока в виде текущего значения и отложенного хвоста
- Отслеживание вычислений по требованию при повторных вызовах stream-ref
- Различение описания бесконечного процесса и бесконечного выполнения
Процедура integers-from может описывать бесконечную последовательность, так как cons-stream не вычисляет свой хвост немедленно. Каждый хвост представляет собой promise для следующей пары.
Процедура stream-ref принудительно вычисляет ровно столько хвостов, сколько требуется для достижения запрошенного индекса. Запрос индекса 9 строит конечный префикс и возвращает 10, поэтому данный запуск завершается.
- Вывод
- —
- Значение
- —
- Диагностика
- —
Первая программа возвращает 10 после принудительного вычисления девяти хвостов потока.
Найдите повторяющиеся события force. Каждый вычисленный результат раскрывает еще одну пару, тогда как незапрошенный остаток остается отложенным.
Измените программу и сравните результат.
Измените запрошенный индекс с 9 на 4. Предскажите значение и количество хвостов потока, которые потребуется принудительно вычислить.
Показать подсказку
Индекс 0 использует текущий car без принудительного вычисления cdr.