История изменений
Исправление monk, (текущая версия) :
Скорее всего ты имел в виду call-with-current-continuation.
block + return-from = call/cc + return, catch/throw прекрасно живёт в Racket, unwind-protect могло бы запрещать call/cc внутри своего тела (как это есть в cl-cont). Это всё технические решаемые проблемы.
А причина: «Be aware that many view CallWithCurrentContinuation not as a cool feature, but as a fatal flaw. It's like having a nuclear bomb in your garage. Cool, sure, but do you really want one? Specially when the neighbor's kids might drop in? Call-cc is the ultimate minimalism; sure, it replaces goto, block, throw, catch, etc, but not in a controlled way.» http://c2.com/cgi/wiki?CallWithCurrentContinuation
И из-за этого подхода появляются «решения» в виде cl-cont и https://formlis.wordpress.com/2010/08/20/hack-co-routines-in-sbcl-lisp/
И я имел в виду не только call/cc. Ещё есть синтаксические объекты (syntax object), привязки (binding), set-преобразователи (set! transformer), хвостовая оптимизация (tail-call optimization).
Если брать Racket, то стоит упомянуть сторожей (custodian), инспекторов (inspector), эфемероны (ephemeron), юниты (unit).
Исходная версия monk, :
Скорее всего ты имел в виду call-with-current-continuation.
block + return-from = call/cc + return, catch/throw прекрасно живёт в Racket, unwind-protect могло бы запрещать call/cc внутри своего тела (как это есть в cl-cont). Это всё технические решаемые проблемы.
А причина: «Be aware that many view CallWithCurrentContinuation not as a cool feature, but as a fatal flaw. It's like having a nuclear bomb in your garage. Cool, sure, but do you really want one? Specially when the neighbor's kids might drop in? Call-cc is the ultimate minimalism; sure, it replaces goto, block, throw, catch, etc, but not in a controlled way.» http://c2.com/cgi/wiki?CallWithCurrentContinuation
И из-за этого подхода появляются «решения» в виде cl-cont и https://formlis.wordpress.com/2010/08/20/hack-co-routines-in-sbcl-lisp/
И я имел в виду не только call/cc. Ещё есть синтаксические объекты (syntax object), привязки (binding), set-преобразователи (set! transformer), хвостовую оптимизацию (tail-call optimization).
Если брать Racket, то стоит упомянуть сторожей (custodian), инспекторов (inspector), эфемероны (ephemeron), юниты (unit).