Supercombinador

Un supercombinador  es un objeto que es invariable con respecto al entorno informático y se forma dinámicamente durante la ejecución del programa. Los supercombinadores establecen un sistema de programación puramente de objetos integrado en la lógica combinatoria . Esto satisface directamente la necesidad de cálculo denotacional de instrucciones en lenguajes de programación, cuando el significado funcional del programa se expresa mediante objetos. Es esencial que el cálculo comience con algún conjunto de instrucciones previamente conocido. En el proceso de cálculo del valor del programa, se generan dinámicamente instrucciones desconocidas de antemano, pero necesarias en el camino, que además se fijan en el sistema de programación.

Definición de un supercombinador

Un supercombinador  es una expresión matemática en la que todas las variables están relacionadas y son independientes de otras expresiones. Puede ser una constante o un combinador en el que todas las subexpresiones son combinadores.

Formalmente, una expresión lambda S se considera un supercombinador de aridad n si tiene la forma λx1.λx2…λxn.E (donde n ≥ 0, por lo que los símbolos "λ" son opcionales), y la expresión E no es una abstracción lambda , pero cualquier abstracción en E es un supercombinador [1] .

Enfoques para el uso de supercombinadores

Hay dos enfoques para usar supercombinadores para implementar lenguajes de programación aplicativos. Con el primero de ellos, el programa se compila utilizando un conjunto fijo de supercombinadores (en la versión no optimizada - S , K , I ) con definiciones preconocidas. En el segundo enfoque, las definiciones de los supercombinadores son generadas por el propio programa durante la compilación.

Véase también

Enlaces

  1. Peyton Jones S.L. La implementación de lenguajes de programación funcionales. - NY: Prentice Hall International, 1987. - 445~p. [una]

Literatura