Dependiendo de las circunstancias, al menos dos de
- Codificación de la iglesia
- Evaluación normal / aplicativa / perezosa
- Conversión Eta
- Todo lo demás
Si está haciendo un estilo funcional en un lenguaje no funcional (o no muy funcional), los dos primeros son útiles. En lenguajes funcionales, al menos los primeros 3 son importantes.
Codificación de la iglesia
- ¿Cuál es el significado de lo permanente en informática?
- Si se demuestra P = NP, ¿cómo cambiará el campo de la inteligencia artificial?
- ¿Cuál es el polinomio más pequeño que puede atravesar todos los conjuntos de n puntos? ¿Hay uno?
- ¿Qué tipos de matemáticas son las más destacadas en informática?
- ¿Qué buscan las escuelas de posgrado en estadística / aprendizaje automático en Ph.D. ¿solicitantes?
Lo primero que los educadores suelen tratar de explicar a las personas con experiencia en codificación imperativa es que las funciones pueden tratarse como valores. Pero los valores pueden ser tratados como funciones. Es un concepto más difícil de entender para la mayoría de las personas, pero tiene un gran potencial para transformar la forma en que escribes el código. Incluso si impide que las personas pasen valores booleanos, eso es un comienzo .
Estrategias de evaluación
Si tiene el lujo de usar un lenguaje que le da una opción, debe comprender las ventajas y desventajas. Si está atrapado con un lenguaje ansioso e imperativo, necesita saber cómo eso lo limita
Conversión Eta
- Generalmente útil para poder razonar sobre cómo puede simplificar o extender una función sin cambiar su naturaleza esencial …
- … lo que también te ayuda a razonar sobre el estilo sin puntos.
- Comprenderlo ayuda a tratar algunos problemas obtusos en varios lenguajes funcionales (problemas de rendimiento en Haskell, problemas de inferencia de tipos en SML, comportamiento de funciones y métodos en Scala).
¡Todo ello!
Creo que la respuesta de Dmitry es fundamentalmente incorrecta. El cálculo de Lambda no es una mera preocupación académica cuando se utilizan lenguajes funcionales reales.
- Los compiladores usan alguna versión del mismo como un paso de compilación intermedio.
- Se usa en optimización
- Aparece en partes significativas de la sintaxis.
¡En Lisp / Scheme prácticamente estás escribiendo directamente en él!
El cálculo de Lambda lo ayuda a comprender por qué los idiomas son, razonar sobre cómo usarlos de manera efectiva, razonar sobre cómo refactorizar su código. Puede aportar un valor práctico y diario.
Para mí, aprender que era una serie regular de momentos de bombilla: “¡Dios mío, por eso X es una cosa, así es como funciona Y!” Seguí teniendo que dejar el libro mientras digería cada revelación.