En ciencias de la computación , Peter Landin 's operador J es una construcción de programación que después de la compone una expresión lambda con la continuidad de la corriente lambda-contexto. 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 hacer etiquetas y saltos con un valor de primera clase. Fue diseñado para funcionar con la máquina SECD con las siguientes transiciones adicionales:
Transición | De | A |
---|---|---|
J | J : f : S , E , ap : C , D | cierre ( f , D ): S , E , C , D |
Cierre | cierre ( f , ( S ' , E' , C ' , D' )): x : S , E , ap : C , D | f : x : S ' , E' , ap : C ' , D' |
El operador J creó originalmente lo que se llamó un "cierre de programa", que consiste en una función llamada cuerpo y un estado SECD llamado volcado. Un programa de cierre equivale a componer su cuerpo con el vertedero 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 de llamada. 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 luego obliga a la función que llamó al operador J a devolver ese valor.
Ejemplos de
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 devuelve de inmediato.
λv. J ( λx.x ) inicialmente devuelve la J de λx.x , pero eso podría usarse en una expresión circundante para hacer que devuelva un valor diferente.
Ver también
Referencias
- Por Landin
- Landin, PJ (enero de 1964). "La Evaluación Mecánica de Expresiones" . Computación. J. 6 (4): 308–320. doi : 10.1093 / comjnl / 6.4.308 .
- Landin, PJ (febrero de 1965). "Correspondencia entre ALGOL 60 y notación Lambda de Church: Parte I". Comm. ACM . 8 (2): 89–101. doi : 10.1145 / 363744.363749 .
- Landin, PJ (marzo de 1965). "Una correspondencia entre ALGOL 60 y las notaciones Lambda de la Iglesia: Parte II". Comm. ACM . 8 (3): 158-167. doi : 10.1145 / 363791.363804 .
- Landin, PJ, "Una descripción formal de Algol 60". Presentado en IFIP Working Conf., Baden, septiembre de 1964.
- Landin, PJ, "Programación sin imperativos: un ejemplo", Informe de investigación de UNIVAC SP (marzo de 1965)
- Landin, PJ, "Getting Rid of Labels", Informe de investigación de UNIVAC SP (julio de 1965)
- Landin, PJ, "An Analysis of Assignment in Programming Languages", 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 .
- 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 .
- 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) . Idiomas específicos del dominio . LNCS . 5658 . págs. 1–19. doi : 10.1007 / 978-3-642-03034-5_1 . ISBN 978-3-642-03033-8. Archivado desde el original (PDF) el 18 de agosto de 2010 . Consultado el 19 de septiembre de 2009 .