He estado tratando de aprender Purescript, un tipo de dialecto para Haskell, y debido a la escasez de material de aprendizaje, me he visto obligado a aprender Haskell en el camino. Hasta ahora, he leído o estoy leyendo los siguientes libros:
- Programación de Haskell desde los primeros principios por Chris Allen y Julie Moronuki
- Learn You a Haskell por Miran Lipovaca
- Patrones de diseño Haskell de Ryan Lemmer
- Aprenda Haskell (MEAP) por Will Kurt
Solo he leído completamente Learn You a Haskell, aunque he leído una buena parte de Haskell de First Principles. Solo he leído sobre un tercio de los Principios de diseño de Haskell, aunque he leído la mayor parte, y solo 2 capítulos de Learn Haskell. Como tal, solo hablaré sobre los primeros tres libros.
Learn You a Haskell (LYAH) no es un libro malo, pero a menos que lo desee porque es gratis, no lo recomendaría para su primer libro (lo explicaré más adelante). Me gustó su advertencia de no aferrarse demasiado a la analogía de la “caja” para Functores, Solicitantes y Mónadas. El libro es un buen libro en general, aunque sea ligero en algunos temas. Desearía que cubrieran cosas como Combinators, Arrows o Monad Transformers. Por lo tanto, es bueno como comienzo, pero para la programación avanzada o incluso intermedia, falta. Tampoco le enseña nada sobre el ecosistema de Haskell, como el uso de la herramienta de construcción Stack (o incluso Cabal) o incluso una descripción general de los módulos del mundo real. Como estoy más interesado en purescript (que se evalúa con entusiasmo) que Haskell (que es perezoso), no me preocupaba demasiado la mención de las trampas de la pereza, pero ten cuidado si estás haciendo de Haskell.
El libro Haskell Programming from First Principles (HPFP) es más completo y supone que el lector no tiene experiencia en programación. Le resultaba una tarea ardua leer algunas secciones del libro, tal vez porque ya soy desarrollador, y en segundo lugar, porque mucho de esto no era nuevo para mí al leer LYAH. Pero, si había algo confuso para mí en LYAH, HPFP generalmente tenía una explicación más completa del concepto. Sin embargo, aún diría que, si bien este libro cubre algunos temas más intermedios como Combinadores, Transformadores de mónada o cómo usar el Apilamiento, todavía no entra realmente en Flechas o Lentes, y desearía que hubiera alguna mención de Mónadas libres o Comonads. Sin embargo, el libro cubre la falta de rigor mucho más que LYAH.
- Cómo aprender ciencia de datos usando python
- ¿Cuál es el mejor libro para aprender algoritmos?
- ¿Cuál es el mejor libro para comenzar C y C ++ como principiante?
- ¿Cuál es el mejor libro para internet y programación web?
- ¿Cuáles son algunos libros avanzados para desarrolladores rápidos?
El último libro, Haskell Design Patterns es más del libro intermedio al avanzado. Se supone que tiene un conocimiento decente de Haskell y desea mejorar en algunos de los detalles más finos. Este libro cubre algunas de las trampas de la pereza, especialmente cuando se trata de IO. También cubre flechas y toques de lentes. Definitivamente no es un libro para aprender Haskell, sino un buen segundo o tercer libro.
Otros materiales y libros que he usado para aprender incluyen:
- Todo sobre mónadas
- Lo que desearía saber al aprender Haskell
- Escríbele un Haskell (Stephen Diehl)
- Escuela de Haskell
- Teoría de la categoría para programadores: el prefacio
Solo por mi propia experiencia, las mónadas no son la parte difícil de Haskell, los tipos sí lo son. Solo estoy en el cuarto capítulo de la teoría de la categoría para programadores, pero me está ayudando a comprender realmente qué tipos son. Las mónadas, después de todo, son solo un concepto implementado como una clase de tipo. Haskell, como lenguaje FP puro, tiene que ver con funciones. Pero sin tipos, ¿cómo sabe si puede componer funciones de manera segura?
Creo que clavar tipos y clases de tipos es crucial para comprender Haskell. Entonces, desde ese punto de vista, probablemente recomendaría HPFP como su primera lectura. Si bien leer LYAH primero no hará daño, podría aburrirle leer HPFP en segundo lugar. Además, HPFP cubre todo lo que hace LYAH, pero lo contrario no es cierto. Además, no haga lo que hice y omita los ejercicios. Haz los ejercicios en el libro de HPFP. Recomiendo leer los patrones de diseño de Haskell una vez que comience a comprender los conceptos básicos.