Песочница

Одноразовые продолжения и dynamic-wind

Текущий call/cc — восходящее, только escape, нереентерабельное одноразовое продолжение на явных сигналах evaluator.

Кратко

LISPEX
(call/cc (lambda (escape) (escape 'done) 'unreachable))

Результат

OUTPUT
done

Текущие гарантии

  • Первый вызов атомарно потребляет продолжение до передачи; каждый последующий вызов даёт E340.
  • dynamic-wind выполняет before, затем thunk, затем after; unwind запускает ожидающие after изнутри наружу.
  • Новая ошибка или escape из thunk after заменяет уже передаваемый сигнал.

Границы

  • Многократное повторное использование продолжений и повторный вход в динамический контекст отложены.
  • Исключения и продолжения среды не реализуют гостевую передачу.