Articulo de referencia

operador J

En informática , el operador J de Peter Landin es una construcción de programación que postcompone una expresión lambda con la continuación del contexto lambda actual. La "funci...

En informática , el operador J de Peter Landin es una construcción de programación que postcompone una expresión lambda con la continuación del contexto lambda actual. La "función" resultante es de primera clase y puede pasarse a funciones subsiguientes, donde, si se aplica, devolverá su resultado a la continuación de la función en la que se creó.

Historia

El operador J se creó para convertir las etiquetas y los saltos en un valor 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 denominó un "cierre de programa", que consistía en 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 ( cierre ( 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 lo llama. Es decir, el operador J devuelve una función que, al aplicarse, combina el argumento del operador J con el argumento de la función, obligando así a la función que llamó al operador J a devolver ese valor.

Ejemplos

J( λx.x ) es equivalente a una instrucción de retorno de primera clase. Esto se debe a que λx.x es la función identidad, por lo que al aplicarla no modifica el valor dado y lo devuelve directamente.

λv. J( λx.x ) inicialmente devuelve el J de λx.x , pero eso 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, “Eliminar 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). "Una introducción a "Una generalización de saltos y etiquetas" de Landin"" (PDF) . Computación simbólica y de orden superior . 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 ciencias de la computación . 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 Is for JavaScript: A Direct-Style Correspondence between Algol-Like Languages ​​and JavaScript Using First-Class Continuations" (PDF) . Domain-Specific Languages . LNCS . Vol.  5658. pp. 1–19 . doi : 10.1007/978-3-642-03034-5_1 . ISBN  978-3-642-03033-8Archivado del original (PDF) el 18 de agosto de 2010. Consultado el 19 de septiembre de 2009 .