Aprediendo Haskell: Iniciando el camino

Aunque tus skills, los lenguajes que usas y las herramientas que conoces sean la antítesis de Haskell y la programación funcional, siempre he pensado que enfrentarse a nuevos paradigmas es, como poco, un ejercicio mental excelente que acaba reportando benificios a largo plazo.

La programación funcional nos obliga a afrontar los problemas desde una perspectiva distinta, con otros patrones de uso, con otras estrategías y con tipos y operadores muy distintos a los de la programación orientada a objetos. Aunque puedas pensar que es una pérdida de tiempo y que no lo podrás aplicar, cada vez más los lenguajes modernos están absorbiendo más y más artificios funcionales, por lo que conocerlos y practicarlos en un lenguaje funcional puro como Haskell te puede ayudar a ir amoblando tu cabeza:

Aprender programación funcional resulta complicado y requiere dedicación, por lo que una forma de suavizar la curva de aprendizaje, es hacerlo en grupo. En nuestra comunidad de desarrollo local #CsTechHub, tenemos la grandísima suerte de contar con Juan Miguel Vilar, profe de la Universitat Jaume I y, desde hace unas semanas, mentor de nuestro pequeño grupo de estudio.

En este y en sucesivos artículos, intentaré compartir mi learning path a través del mundo de la programación funcional, viniendo de un background de Java, JavaScript y Python principalmente.

Espero que este ejercicio me ayude a asentar conceptos y, además, guíe vuestro camino si como yo, queréis profundizar en este paradigma.

Arranque del grupo de estudio

Los grupos de estudio son grupos de personas con un interés común que, mediante reuniones periódicas (semanales en nuestro caso), intentan aprender juntos estudiando y practicando con los mismo materiales al mismo tiempo.

En nuestro caso somos de 6 a 8 personas y hemos comenzado inicialmente por aprender la sintaxis del lenguaje leyendo el libro Practical Haskell de Alejandro Serrano:

Practical Haskell

En los primeros capítulos de este libro, se completa un recorrido por los aspectos más básicos del lenguaje como definiciones de tipos, funciones, listas, etc y, aunque son conceptos sencillos inicialmente, pronto se complementan con otros conceptos más avanzados que permiten hacernos una idea de cómo se utilizan en el mundo real. Después de varias semanas y con un poco más de perspectiva, creo que si arrancas de 0 en Haskell, quizá te interese comenzar primero por el Learn You a Haskell for Great Good! aka “el libro del elefante”, ya que lleva un ritmos más pausado y ofrece más ejemplos sencillos de cada uno de los conceptos:

Learn You a Haskell for Great Good!

Trabajando sobre los primeros capítulos del Practical Haskell, uno de los primeros puntos es poder lanzar el intérprete de Haskell y comenzar a probar los ejemplos y construcciones que vamos aprendiendo. Para ello, mi recomendación es instalar Stack directamente y utilizar el comando stack repl para abrir el REPL. De esta manera, el propio Stack será el reponsable de descargar la última versión del compilador y de gestionar el entorno, proyectos, testing, etc.

Para más detalles acerca del proceso de instalación, sigue la documentación oficial de Stack.

Una vez ya en el REPL, son de utilidad para comenzar a probar cosas comandos como:

  • :load. Carga código Haskell desde ficheros .hs que tengamos en el sistema de ficheros.
  • :type. Muestra el tipo de una valor o expresión.
  • :info. Muestra información adicional sobre la definición que le pasamos.

Aunque todo es muy básico todavía, poco a poco iremos adentrándonos en los conceptos y sintaxis del lenguaje :)