Me gustaría aprender programación funcional. ¿Qué lenguaje de programación funcional es el mejor para principiantes?

Creo que la tarea principal es comprender el paradigma y aquí Haskell podría ser una buena opción, ya que es pura y estricta en lo que respecta a la programación funcional. Un buen comienzo debe ser ¡Aprende Haskell por un gran bien!

Personalmente comencé con Erlang y luego cambié a Elixir . Ambos son idiomas que tienen grandes trabajos de webframe. No son tan puros como Haskell, pero especialmente con Elixir puedes hacer las cosas rápido. Para Erlang hay un libro similar que utilicé personalmente para aprender, como el de Haskell: ¡Aprende algo de Erlang para un gran bien! Para Elixir utilicé Programming Elixir, consulte: Funcional |> Simultáneo |> Pragmático |> Diversión: Amazon.de: Dave Thomas: Fremdsprachige Bücher.

A algunos colegas también les gusta Clojure ejecutándose en la JVM. La ventaja de Clojure es el gran conjunto de bibliotecas. También Clojurescript le permite escribir código del lado del cliente. Entonces, para las aplicaciones web, esta también es una buena alternativa.

Depende de usted qué llevar. Si te gusta discutirlo, solo escríbeme. Codificación feliz

Si el objetivo es aprender los principios de FP, haría dos recomendaciones, por razones complementarias: Haskell y Racket.

Haskell tiene mucho material de aprendizaje de alta calidad. El libro de Hutton Haskell y las notas de la conferencia cs194 de Yorgey son mis favoritas. Haskell es más fácil de aprender para un verdadero principiante que para un programador experimentado, por lo que tienes suerte. Todos están de acuerdo en que es un lenguaje hermoso, según cualquier métrica. Es puro por diseño, por lo que obliga al buen comportamiento del alumno. Junto con los principios de FP, también enseña conceptos de sistemas de tipos modernos por ejemplo. Si bien no es ampliamente utilizado, ¡su comunidad es entusiasta y amigable (y relativamente grande)! Está encontrando más aplicaciones industriales y las herramientas también están mejorando.

Racket es quizás el dialecto mantenido más logrado de LISP. No es Scheme, pero está cerca de él. Al igual que Haskell, fue diseñado por varios académicos, específicamente con el objetivo de ser un lenguaje adecuado para la enseñanza de FP. Al igual que Lisp, sigue el principio de código como datos. Tiene una gran cantidad de bibliotecas de alta calidad, un administrador de paquetes que funciona, documentación de primer nivel y libros bien escritos para principiantes e investigadores, y un sistema macro increíble e increíble. Se puede usar para diseñar e implementar nuevos lenguajes. Pyret está escrito en Racket.

Lo más importante: para un principiante, no recomendaría Clojure, ni Erlang, ni Scala. Idris o Shen pueden marcar seriamente a un ser humano inocente de por vida. Todos los idiomas anteriores son perfectamente buenos, pero no ideales para principiantes, por razones demasiado específicas y aburridas para explicar en una publicación de Quora.

Quizás no solo un idioma sino también una excelente literatura.
Racket tiene versiones de sí mismo para principiantes, pero lo más importante es que el excelente libro “Cómo diseñar programas” es al principio para principiantes.
Desea comenzar algo que le brinde comentarios instantáneos sin prejuicios para informarle cómo lo está haciendo. DrRacket es el entorno interactivo para probar ideas de programación y aprender.
Los conceptos básicos del lenguaje siempre serán esenciales para aprender las características más avanzadas que casi siempre lo mantendrán aprendiendo con las instalaciones más avanzadas necesarias para la informática avanzada, incluido el diseño de su propio idioma.
El trabajo de un programador es automatizar. En última instancia, los programadores pueden querer automatizar la programación. Racket está mejor equipado para hacer eso.

Haskell es sumamente elegante pero alucinante para principiantes. Manténgase alejado de él como primer paso.

Clojure ofrece un primer paso más suave. Al ser un Lisp, el lenguaje es pequeño y tiene todo el poder que uno esperaría en un lenguaje de propósito general.

O prueba con Elm. Su sistema de tipos lo hace más elegante que Clojure. Es similar a Haskell pero más pequeño y más enfocado. Aunque los tres idiomas ofrecen un medio de programación en el navegador, solo Elm fue diseñado para ello.

Haskell debería venir después de una experiencia real con Clojure o Elm. Para divertirse, comience implementando un pequeño juego: ¿qué tal Lode Runner?

Racket, y siga el diseño del programa sistemático MOOC – Parte 1: El método central. Está basado en el libro Cómo diseñar programas que es un excelente libro para principiantes.