Las continuas como característica de idioma (en oposición a las continuaciones como un patrón de programación) son reificaciones de (partes de) el contexto de control ("la pila"). Como dijo Don, las continuaciones no delimitadas representan todo el contexto, mientras que las continuaciones delimitadas solo representan una parte de él.
Normalmente, la captura de una continuación no delimitada (por ejemplo, con call/cc
) no cambia el contexto de control; el contexto de control solo cambia cuando se invoca la continuación (es decir, se refleja en la pila).
Típicamente, la captura de una continuación delimitado (por ejemplo, con shift
) aborta inmediatamente el segmento del contexto de control hasta el delimitador más cercano (por ejemplo, reset
) y reifica que a medida que lo que parece ser una función simple y llano (aunque podría implementarse como trucos de pila en lugar de implementar funciones normales).
BTW, las continuaciones a veces se llaman "saltos de primera clase", pero eso no significa que tengan más que ver con la instrucción jmp
que una llamada de función normal.
En 'J', vea Danvy, Shan y Zerny's" J es para JavaScript: una correspondencia de estilo directo entre lenguajes tipo Algol y JavaScript usando continuaciones de primera clase ": http: //www.cs.rutgers. edu/~ ccshan/j/dsz.pdf – sclv