Haskell es hermoso y te enseñará a pensar sobre la programación de una manera nueva. OCaml es útil con sus bibliotecas y comunidad saludable de usuarios. F # es como OCaml, pero puedes ejecutarlo en .NET. Scala es una transición fácil para aquellos familiarizados con Java y la programación orientada a objetos. Pero si desea aprender lo básico de la programación funcional, Scheme es sin duda el mejor.
La programación funcional se caracteriza por programas que se parecen más a funciones matemáticas que a procedimientos que mantienen y actualizan el estado. En lugar de actualizar los valores existentes, los programas funcionales producen nuevos valores como funciones de los valores antiguos. En los lenguajes de programación funcionales, tiene funciones de primera clase (funciones que se pueden pasar como cualquier otro valor) y funciones de orden superior (funciones que toman otras funciones como argumentos). Los modismos clave en la programación funcional incluyen el curry (aplicación parcial de funciones) y el uso de mapas , filtros y reducciones de construcciones para interactuar con estructuras de datos. Los lenguajes funcionales modernos, como Haskell y la familia ML, tienen sofisticados sistemas de tipo estático que nos permiten razonar acerca de los programas antes de ejecutarlos, pero los tipos no son fundamentales para la programación funcional y pueden confundir al programador funcional novato.
La programación funcional se reduce a una idea clave: usted hace todo con funciones . Ningún otro lenguaje destila este concepto como lo hace Scheme. Diseñado basado en Lisp para enseñar a los estudiantes a programar, Scheme es un lenguaje simple y muerto basado en dos principios:
- Cada expresión es un átomo o una lista.
- Evalúa una lista aplicando el primer elemento de la lista al resto de los argumentos.
Debido a su simplicidad, Scheme proporciona un entorno fantástico para acostumbrarse a manipular valores de una manera funcional. Después de aprender Scheme, estará bien equipado para reconocer y utilizar patrones funcionales en lenguajes más complejos. (Tenga en cuenta que la mayoría de los lenguajes funcionales, incluido el Esquema, admiten funciones que no son puramente funcionales , por ejemplo, la actualización de valores. Estas funciones permiten una mayor eficiencia del programa, y en ocasiones de la programación, pero recomiendo aprender a programar en un estilo totalmente funcional. antes de usar estos atajos.)
- ¿Quién es el mejor rapero en las canciones de punjabi?
- ¿Cuáles son las mejores universidades en los Estados Unidos para una maestría en ciencias de la computación? ¿Cuáles son los requisitos previos para esas universidades?
- ¿Cuál es el mejor lugar para conseguir un cheesesteak en Filadelfia y cómo se comparan los diferentes lugares?
- ¿Cuál es la mejor plataforma para comenzar en el desarrollo de un juego?
- ¿Cuáles son los mejores bancos de la India?
Un libro de texto fantástico para comenzar con Scheme es Estructura e interpretación de programas de computadora. Un libro tan fantástico sobre programación y pensamiento computacional. He vuelto y lo he leído años más tarde por diversión.
Además, si quieres ser un poco más moderno y jugar con la vanguardia de la investigación de Scheme, consulta The Racket Language. Todo tipo de herramienta y lenguaje divertido allí.
Nota. Supongo que está leyendo esta respuesta porque ya sabe por qué quiere aprender programación funcional. Si no, aquí hay algunas razones.
- Debido a su relativa concisión y simplicidad, los programas funcionales tienden a ser más fáciles de razonar que los imperativos.
- Los lenguajes de programación funcional son elegantes y lo ayudarán a convertirse en un mejor programador en todos los idiomas.
- “Los programadores más inteligentes que conozco son programadores funcionales”. – uno de mis profesores de pregrado