¿Cálculo lambda fuera de la programación funcional?

21

Soy un estudiante universitario y actualmente estamos estudiando el cálculo de Lambda. Sin embargo, todavía me cuesta entender exactamente por qué esto es útil para mí. Me doy cuenta de que si haces un montón de programación funcional, podría ser útil, sin embargo, creo que no es realmente necesario para aprender programación funcional, ¿qué crees?

En segundo lugar, ¿hay algún uso para el cálculo Lambda dentro del ámbito de la informática pero fuera de los lenguajes de programación funcionales?

Jacob
fuente

Respuestas:

15

El cálculo lambda es fundamental en la lógica, la teoría de categorías, la teoría de tipos, la verificación formal, ... Básicamente, cualquier cosa que tenga que ver con la semántica del lenguaje de programación y la lógica formal. Es un formalismo tan fundamental que las personas que trabajan en estos campos ni siquiera cuestionan su beneficio.

Creo que es extremadamente útil para comprender la programación funcional porque le brinda la esencia de la programación funcional. Funciones, aplicación, sustitución. En base a esto, puede desarrollar sus habilidades para razonar sobre programas funcionales y transformaciones de los mismos. Las funciones de orden superior son muy fáciles.

Seguro que podrías aprender programación funcional sin el cálculo lambda, pero nunca entenderías realmente la programación funcional sin él.

Dave Clarke
fuente
Muchas gracias por tu respuesta Dave. Creo que la verificación formal es la mejor razón hasta ahora, en cuanto a por qué el cálculo lambda es útil para mí para aprender, y curiosamente, haré un curso sobre verificación formal el próximo semestre. ¿Usaría también el cálculo lambda para hacer una verificación formal de un software escrito en cualquier idioma, por ejemplo, uno imperativo u orientado a objetos?
Jacob
1
No puede usar el cálculo lambda directamente al hacer la verificación formal, pero aparecerá en los fundamentos de la verificación formal. Escribir especificaciones a menudo implica escribir en un lenguaje funcional, incluso para código imperativo / OO.
Dave Clarke
Bien, eso es interesante, muchas gracias, ahora tengo un poco más de razón para estudiar esto. ¿Sabes si el cálculo lambda se usa para diseñar lenguajes no funcionales (en niveles más bajos)?
Jacob
1
ALGOL Scala En última instancia, su pregunta es difícil de responder. El cálculo lambda se ha convertido en una parte del conocimiento común para (la mayoría) de los diseñadores de idiomas y, por lo tanto, influye en el diseño del lenguaje, incluso si no se usa explícitamente. Considere bloques en Smalltalk o Ruby, clases anónimas en Java. Estos son cierres, que están estrechamente vinculados con funciones de orden superior en el cálculo lambda.
Dave Clarke el
Bien, muchas gracias Dave, eso es muy apreciado.
Jacob
17

Está solicitando una aplicación fuera de la informática y la lógica. Esto se encuentra fácilmente, por ejemplo, en topología algebraica, es conveniente tener una categoría cerrada de espacios cartesianos, ver categoría conveniente de espacios topológicos en nLab. El lenguaje formal correspondiente a las categorías cerradas cartesianas es precisamente el cálculo . Permítanme ilustrar con un ejemplo muy simple cómo esto es útil.λ

f:RRf(x)=x2ex+log(1+x2)

f:RR

f(x)=(λf:C(R).xxf(1+t2)dt)(λy:R.max(x,sin(y+3))
λmaxsin

λλ

Andrej Bauer
fuente
1
Gracias por su elaborada respuesta. En realidad, estaba tratando de encontrar un uso para el cálculo lambda dentro de la informática pero fuera de la programación funcional, disculpas si esto no estaba claro. He cambiado la pregunta para decirlo más claramente.
Jacob
Ah, lástima, habría escrito una respuesta elaborada sobre eso.
Andrej Bauer el
Disculpas por eso. Siéntase libre de agregar cualquier comentario si desea agregar información adicional :)
Jacob
2
λ
7

λλ

λ

Martin Berger
fuente
5

λ

λ

λ

Peter Wone
fuente