Продолжения как языковая особенность (в отличие от продолжений в виде шаблона программирования) - это реализации (части) контекста управления («стека»). Как сказал Дон, неограниченные продолжения представляют весь контекст, тогда как ограниченные продолжения представляют только его часть.
Как правило, захват неограниченного продолжения (например, с call/cc
) не меняет контекст управления; контекст управления изменяется только когда вызывается продолжение (т. е. отражается в стеке).
Как правило, захват продолжения с разделителями (например, с помощью shift
) немедленно прерывает сегмент контекста управления до ближайшего разделителя (например, reset
) и превращает его в то, что кажется простой старой функцией ( хотя это может быть реализовано как хитрость стека, а не как обычные функции).
Кстати, продолжения иногда называют «первоклассными прыжками», но это не значит, что они имеют больше общего с инструкцией jmp
, чем обычный вызов функции.