¿Qué es el cálculo de Lambda en términos simples?

El cálculo lambda es una formalización del proceso de definición de funciones y evaluación de expresiones que las contienen.

El bit “lambda” es solo una conveniencia de notación para definir y referirse a funciones sin tener que inventarles un nombre.

Por ejemplo, podría definir una función así:
[math] MyFunction (x) = 5 \ cdot x ^ 3 – x [/ math].

Y luego consulte a partir de entonces “MyFunction”. Podría decir “[math] MyFunction (9) = 5 \ cdot 9 ^ 3 – 9 = 3636 [/ math]” o “MyFunction es extraño, en el sentido de que MyFunction (-x) = -MyFunction (x)” , o “Hay tres entradas que MyFunction se envía a sí mismas”, etc.

Pero si solo quiere referirse a él una vez, ¿por qué perder el tiempo inventando un nombre? [Incluso si desea referirse a él más de una vez, ¿por qué perder el tiempo inventando un nombre si no tiene nada mejor que usar “MyFunction”?]. En cambio, podría escribir [matemáticas] \ lambda x. 5x ^ 3 – x [/ math] significaría lo mismo que “MyFunction” significaría (cualquiera de los dos significaría la función que envía cualquier entrada del formulario “[math] x [/ math]” a la salida del formulario correspondiente “[matemáticas] 5x ^ 3 – x [/ matemáticas]”).

Y eso es. La “lambda” del cálculo lambda es solo esa conveniencia de notación para definir funciones. Pero esa elección superficial, de hecho, hace que sea mucho más conveniente comenzar a definir y discutir expresiones hechas de muchas funciones pequeñas (particularmente funciones que pueden tomar como entrada o producir como salida otras funciones). Y el resto del cálculo lambda es solo el estudio formal de ese proceso de definición y evaluación de funciones y expresiones construidas a partir de ellos.

Solo una notación matemática para razonar sobre funciones, que es equivalente a la máquina de truing . es decir
cualquier función que pueda describir con el cálculo lambda podría implementarse en una máquina Turing y viceversa.
solo hay tres tipos de expresiones en el cálculo lambda:

Referencias variables

Funciones anónimasv . E ) [matemáticas] \ equiv [/ matemáticas]

function (v) { return e ; } 

Llamadas a funciones ( f e) [matemáticas] \ equiv [/ matemáticas]

 f(e) 

¿Parece carecer tanto de recursión como de iteración , sin mencionar números, booleanos, condicionales, estructuras de datos y todo lo demás y aún el equivalente de Turing ?
Una representación y una función de alto orden hacen posible esa equivalencia de la siguiente manera :

  • Codificaciones de la iglesia [1] y

un medio de incrustar datos y operadores en el cálculo lambda, una representación de los números naturales usando la notación lambda
[matemáticas] n \ equiv \ lambda f. \ lambda .x. f ^ n (x) [/ matemáticas]

[matemáticas] más (m, n) = m + n \ equiv f ^ {(m + n)} (x) = f ^ m (f ^ n (x)) [/ matemáticas]

y así sucesivamente a listas, booleanos, condicionales y recursivos …
[1]

  • Y combinador. [no, no el popular]

Una forma de representar un valor como un número, un booleano o una lista como procedimiento
Ayuda a expresar una función ” recursiva ” como factorial sin usar recursión o iteración ) [2] una función de orden superior que calcula un punto fijo de otras funciones. Un punto fijo de una función f es un valor que f no cambia ( x tal que x = f ( x )).
es decir

 var factorial = Y(function (fac) {return function (n) { if (n == 0) { return 1; } else { return n * fac(n - 1); } };}); factorial(5); 

o

 Y = (lambda f: (lambda x: f(lambda v: x(x)(v)))(lambda x: f(lambda v: x(x)(v)))) fact = (lambda f: (lambda n: 1 if (n == 0) else n * f(n - 1))) Y(fact)(5) 

y eso hace que el cálculo lambda sea el lenguaje de programación más simple y minimalista, en el corazón de los populares lenguajes de programación funcionales e imperativos, que conocemos.

[1] http://en.wikipedia.org/wiki/Chu…

[2]

  1. http://en.wikipedia.org/wiki/Fix
  2. http://amix.dk/uploads/WhyOfY.pdf

Aquí hay una introducción fácil sobre el cálculo para principiantes:

Y aquí está la publicación completa del blog sobre este tema: Introducción al cálculo Lambda

Es la aplicación de funciones a sus parámetros, y esos parámetros pueden ser otras funciones. Las funciones son, en cierto sentido, entidades de objeto, y hay un par de reglas simples para calcular resultados a partir de ellas. Las funciones pueden contener más funciones, cuyos resultados pueden producir otras funciones. En su mayor parte, solo considera qué funciones pueden hacer y los resultados computables que pueden producir. No he visto que tenga un álgebra que pueda usarse con él, como con el álgebra cartesiana, y el cálculo que podemos obtener de eso. Solo tiene un método para construir funciones, aplicarles argumentos y producir resultados calculados.

More Interesting

¿Son importantes los números complejos para la informática? Si es así, ¿por qué?

¿Cuál es la opción más barata para implementar microservicios?

¿Agregar más diversidad en tecnología es importante para la innovación / creación de valor? ¿O es el "impulso de la diversidad" de las grandes empresas tecnológicas una postura políticamente correcta?

¿Cuál es el método de fuerza bruta?

¿Unsigned int no garantiza un rango mayor de valores no negativos que su homólogo firmado?

¿Cómo puede un robot / máquina alcanzar un estado de autoconciencia?

¿Cuáles son las aplicaciones de un registro de desplazamiento?

Planeo comprar un sitio web en Flippa. Solo tengo experiencia en html y css. ¿Qué otras habilidades debo aprender? (En términos de administrarlo únicamente por $)

¿Cuál es el mejor libro para aprender hardware y software de computadora?

¿Cuál es la mejor computadora para un desarrollador de PHP?

¿Dónde puedo encontrar una explicación del software? Las computadoras usan unos y ceros, pero ¿cómo se les ordena hacer las cosas?

¿Cuál es la función principal del núcleo en los sistemas operativos?

Dado un lenguaje con una función de pliegue (ala Haskell) garantizada para terminar, ¿cuán necesario sería la integridad de Turing para que el resto de este lenguaje sea útil?

¿Son dos semanas suficientes para terminar un pequeño proyecto de aprendizaje automático?

Cómo usar scikit-learn para el pronóstico de datos (problema de regresión)