La pregunta subyacente:
¿Qué hace el cálculo lambda por nosotros que no podemos hacer con las propiedades básicas de la función y la notación generalmente aprendidas en el álgebra de la escuela secundaria?
En primer lugar, ¿qué significa abstracto en el contexto del cálculo lambda? Mi comprensión de la palabra resumen es algo que está divorciado de la maquinaria, el resumen conceptual de un concepto.
Sin embargo, las funciones lambda, al eliminar los nombres de las funciones, evitan un cierto nivel de abstracción. Por ejemplo:
f(x) = x + 2
h(x, y) = x + 5 y
Pero incluso sin definir la maquinaria de estas funciones, podemos hablar fácilmente sobre su composición. Por ejemplo:
1. h(x, y) . f(x) . f(x) . h(x, y) or
2. h . f . f . h
Podemos incluir los argumentos si queremos, o podemos abstraernos por completo para dar una visión general de lo que está sucediendo. Y podemos reducirlos rápidamente a una sola función. Echemos un vistazo a la composición 2. Puedo tener capas de detalles de estudiantes con las que puedo escribir dependiendo de mi énfasis:
g = h . f . f . h
g(x, y) = h(x, y) . f(x) . f(x) . h(x, y)
g(x, y) = h . f . f . h = x + 10 y + 4
Realicemos lo anterior con cálculo lambda, o al menos definamos las funciones. No estoy seguro de que esto sea correcto, pero creo que la primera y la segunda expresión aumentan en 2.
(λuv.u(u(uv)))(λwyx.y(wyx))x
Y multiplicar por 5 años.
(λz.y(5z))
En lugar de ser abstracto, esto parece entrar en la maquinaria misma de lo que significa sumar, multiplicar, etc. La abstracción, en mi opinión, significa un nivel más alto en lugar de un nivel más bajo.
Además, estoy luchando por ver por qué el cálculo lambda es incluso una cosa. ¿Cuál es la ventaja de
(λuv.u(u(uv)))(λwyx.y(wyx))x
terminado
h(x) = x + 5 y
o una notación combinada
Hxy.x+5y
o incluso la notación de Haskell
h x y = x + 5 * y
Nuevamente, ¿qué hace el cálculo lambda por nosotros que no podemos hacer con las propiedades de función estilo f (x) y la notación con la que muchos están familiarizados?