Продолжение
Продолжение (англ. continuation) представляет состояние программы в определённый момент, которое может быть сохранено и использовано для перехода в это состояние. Продолжения содержат всю информацию, чтобы продолжить выполнения программы с определённой точки. Состояние глобальных переменных обычно не сохраняется, однако для функциональных языков это несущественно (выборочное сохранение/восстановление значений глобальных объектов в Scheme достигается отдельным механизмом dynamic-wind). Продолжения похожи на goto Бейсика или setjmp()/longjmp() Си, так как также позволяют перейти в любое место программы. Но продолжения, в отличие от goto, позволяют перейти только в участок программы с определённым состоянием, которое должно быть сохранено заранее, в то время, как goto позволяет перейти в участок программы с неинициализированными переменными. Для функциональных языков продолжением также называют функцию, передаваемую в качестве аргумента другой функции, и используемую для гибкого развития хода вычислений. Поскольку продолжение, раз использовано, не возвращает управления, такой стиль применим лишь в языках с оптимизацией хвостовой рекурсии (Scheme, ML, Haskell).
Поддержка языками программирования
Многие языки программирования предоставляют эту возможность под различными именами, например:
- Scheme:
call/cc
(краткая запись дляcall-with-current-continuation
) - SML:
SMLofNJ.Cont.callcc
- Си:
setcontext
et al. (UNIX System V и GNU libc) - Руби:
callcc
- Smalltalk:
Continuation currentDo:
, в большинстве современных реализаций продолжения могут быть реализованы на чистом Smalltalk, не требуя специальной поддержки в виртуальной машине. - Rhino :
Continuation
- Haskell :
callCC
(в модулеControl.Monad.Cont
) - Factor :
callcc0
иcallcc1
- Python :
yield
См. также
Ссылки
- Продолжение всемирной паутины — о использования продолжений для построения веб-приложений.
SQL | Это незавершённая статья о компьютерных языках. Вы можете помочь проекту, исправив и дополнив её. |
cs:Continuation en:Continuation fr:Continuation it:Continuazione ja:継続 uk:Продовження (програмування)
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....