En informática , el operador J de Peter Landin es una construcción de programación que compone posteriormente una expresión lambda con la continuación del contexto lambda actual. La “función” resultante es de primera clase y se puede pasar a funciones posteriores, donde, si se aplica, devolverá su resultado a la continuación de la función en la que se creó.
Historia
El operador J fue creado para convertir las etiquetas y los saltos en valores de primera clase. Fue diseñado para funcionar con la máquina SECD con las siguientes transiciones adicionales:
El operador J creó originalmente lo que se llamó un "cierre de programa", que constaba de una función llamada cuerpo y un estado SECD llamado volcado. Un cierre de programa es equivalente a componer su cuerpo con el volcado en forma de continuación ( closure ( f , D )( x) = D ( f ( x ))).
Descripción simplificada
El operador J compone una función con la continuación de la función que la llamó. Es decir, el operador J devuelve una función que, cuando se aplica, aplica el argumento del operador J con el argumento de la función y, a continuación, obliga a la función que llamó al operador J a devolver ese valor.
Ejemplos
J( λx.x ) es equivalente a una declaración de retorno de primera clase. Esto se debe a que λx.x es la función de identidad, por lo que cuando se aplica no hará nada con el valor dado y lo retornará de inmediato.
λv. J( λx.x ) inicialmente devuelve el J de λx.x , pero podría usarse en una expresión circundante para hacer que vuelva a devolver un valor diferente.
Véase también
Referencias
- Por Landin
- Landin, PJ (enero de 1964). "La evaluación mecánica de las expresiones". Computadora. J.6 (4) : 308–320. doi : 10.1093/comjnl/6.4.308 .
- Landin, PJ (febrero de 1965). "Correspondencia entre ALGOL 60 y la notación Lambda de Church: Parte I". Comm. ACM . 8 (2): 89–101. doi : 10.1145/363744.363749 . S2CID 6505810.
- Landin, PJ (marzo de 1965). "Una correspondencia entre ALGOL 60 y las notaciones Lambda de Church: Parte II". Comm. ACM . 8 (3): 158–167. doi : 10.1145/363791.363804 . S2CID 15781851.
- Landin, PJ, “Una descripción formal de Algol 60”. Presentado en la Conferencia de trabajo de la IFIP, Baden, septiembre de 1964.
- Landin, PJ, “Programación sin imperativos: un ejemplo”, Informe de investigación de UNIVAC SP (marzo de 1965)
- Landin, PJ, “Cómo deshacerse de las etiquetas”, Informe de investigación de UNIVAC SP (julio de 1965)
- Landin, PJ, “Análisis de la asignación en lenguajes de programación”, Informe de investigación de UNIVAC SP (septiembre de 1965)
- Landin, PJ, “Una generalización de saltos y etiquetas”, math.bas.bg (1998)
- Por otros
- Thielecke, H. (diciembre de 1998). "Introducción a "Una generalización de saltos y etiquetas" de Landin" (PDF) . Higher-Order and Symbolic Computation . 11 (2): 117–123. doi :10.1023/A:1010060315625. S2CID 1562780.
- Danvy, O. ; Millikin, K. (noviembre de 2008). Tennent, Robert (ed.). "Una deconstrucción racional de la máquina SECD de Landin con el operador J". Métodos lógicos en informática . 4 (4:12): 1–67. arXiv : 0811.3231 . doi :10.2168/LMCS-4(4:12)2008. S2CID 7926360.
- Danvy, O .; Shan, CC; Zerny, I. (2009). "J es para JavaScript: una correspondencia de estilo directo entre lenguajes tipo Algol y JavaScript usando continuaciones de primera clase" (PDF) . Lenguajes específicos del dominio . LNCS . Vol. 5658. págs. 1–19. doi : 10.1007/978-3-642-03034-5_1 . ISBN 978-3-642-03033-8Archivado desde el original (PDF) el 18 de agosto de 2010. Consultado el 19 de septiembre de 2009 .