История изменений
Исправление
Legioner,
(текущая версия)
:
в Java/JS/... - это concurrency примитив, 'контейнер' для результатов (часть методов которого - блокирующие)
в Scheme promise - это control feature, которая просто позволяет делать delayed evaluation
Так ли это?
Да. Можешь считать это аналогом lazy evaluation. Название одинаковое, а смысл разный.
или достаточно будет создать обычный класс Promise, который просто хранит тело выражения (s-exp) и результат (если есть), а force просто берет тело и выполняет его (передает хранящийся в promise s-exp evaluator'у)?
Про захват переменных не забывай только. Вообще надо сохранять лямбда-объект, а после вычисления убирать ссылку, чтобы сборщик мусора собрал его.
Исходная версия
Legioner,
:
в Java/JS/... - это concurrency примитив, 'контейнер' для результатов (часть методов которого - блокирующие)
в Scheme promise - это control feature, которая просто позволяет делать delayed evaluation
Так ли это?
Да. Можешь считать это аналогом lazy evaluation. Название одинаковое, а смысл разный.
или достаточно будет создать обычный класс Promise, который просто хранит тело выражения (s-exp) и результат (если есть), а force просто берет тело и выполняет его (передает хранящийся в promise s-exp evaluator'у)?
Про захват переменных не забывай только.