В Схеме вы можете реализовать call/cc
, используя лямбды при преобразовании в стиль передачи продолжения (CPS).При преобразовании в CPS каждое вхождение call/cc
может быть заменено следующим эквивалентом:
(lambda (f k) (f (lambda (v k0) (k v)) k))
, где k
- это продолжение, которое нужно сохранить, а (lambda (v k0) (k v))
- это процедура выхода, которая восстанавливает этопродолжение (любое продолжение k0
, которое активно, когда оно вызывается, отбрасывается).
Итак, чтобы ответить на ваш вопрос по Схеме: да, это можно сделать.