El cálculo lambda es un sistema formal diseñado para explorar la definición de funciones, las aplicaciones, y la Recursividad. Esto genera un nuevo Paradigma Funcional.

5 + 3 * 2  // Expresión reducible (redex)
5 + 6      // Reducción a una expresión equivalente
11         // Expresión irreducible

Sea la reducción de manera que cada aparición de en la expresión se sustituye por . Existe un conjunto de Reducciones Lambda.

Es común escribir el operador siempre al frente, antes de los argumentos:

+ 5 (* 3 2)
+ 5 6
11

El cálculo lambda nos permite definir funciones de un solo argumento: (por ejemplo ) y aplicarlas mediante , siendo un argumento (por ejemplo .

Sintaxis

El cálculo lambda es una Gramática Libre de Contexto.

<expr> ::= <const>
		| <var>
		| (λ <var>.<expr>)
		| (<expr> <expr>)

Convenciones:

  1. La aplicación es asociativa por la izquierda: .
  2. La abstracción es asociativa por la derecha: .
  3. La aplicación es prioritaria sobre la abstracción: .
  4. Se puede suprimir símbolos en abstracciones consecutivas: .

El alcance de una variable es la porción de la expresión donde el identificador es accesible. Una variable puede estar:

  • Ligada: si aparece en el ámbito de una variable instanciable.
  • Libre: si una expresión tiene ocurrencias que no están ligadas.

Ej: en las variables e están ligadas, pero la está libre.