Bienvenida
Bienvenidos sean todos al laboratorio del curso de Lógica Computacional II. Soy su ayudante de laboratorio, Juan Pablo.
Durante el curso abarcaremos varios sistemas lógicos, tratando de conectar la teoría con su utilidad en distintos ámbitos prácticos; en particular nos serán de gran interés los sistemas de tipos, por su conexión con la lógica mediante la correspondencia Curry-Howard (no se preocupen, más adelante veremos qué es eso).
En el laboratorio utilizaremos el lenguaje de programación Haskell. Les sugiero lo instalen mediante el uso de la herramienta GHCup pues simplifica mucho el proceso, y les permite la instalación de lo siguiente:
- GHC: el compilador de Haskell.
- Cabal: un programa para el manejo de proyecto de Haskell.
- HLS: una herramienta para proveer información útil en sus editores de texto al programar en Haskell (opcional, pero muy sugerido).
Pre-requisitos
Es recomendable tener algo de familiaridad con el paradigma de programación funcional, y con sistemas de tipos estáticos fuertes. En particular, haber usado Haskell anteriormente les dará esas nociones. Otros lenguajes que pueden resultar buenas referencias previas son: OCaml, Scala, Rust.
Si no tienes experiencia en ninguno de los anteriores, más adelante encontrarás algunos recursos para facilitar tu aprendizaje.
Material
Durante la sesión revisamos las siguientes diapositivas: slides_08-05.pdf.
Las diapositivas son un crash-course para refrescar los conceptos más importantes de Haskell. A su vez, las diapositivas están basadas en material que se puede encontrar más adelante en las referencias.
Recursos extra
En esta ocasión, los recursos extra son material introductorio a Haskell.
- Aprende Haskell por el bien de todos: recomendado como un recurso amigable para aprender Haskell desde cero. Es largo el material, pero las primeras 6 secciones son suficiente (hasta "funciones de orden superior").
- Haskell for imperative programmers (en inglés): Esta serie de videos es un excelente recurso. Aunque está enfocado para una audiencia con algo de experiencia en otros lenguajes imperativos, en realidad alguien sin experiencia puede seguir el material sin mucho problema. También incluye algunos ejercicios y soluciones. Es suficiente revisar hasta el video #13.
- Haskell Programming from First Principles (en inglés, no gratuito): Hay muchos libros para aprender Haskell, pero este es el único que puedo recomendar habiéndolo leído. Cubre desde lo más básico sin asumir conocimientos previos de programación, hasta temas muy avanzados. Con llegar al capítulo "Algebraic Datatypes" es más de lo necesario. Desafortunadamente el recurso no es gratuito, pero si te interesa mucho el libro, te recomiendo escribir un correo al autor solicitando un descuento por ser estudiante (sí contesta y es muy amable).
Referencias
Utilicé este contenido como referencia para realizar las diapositivas. Cubren lo básico de Haskell en muy poco contenido, sin entrar en muchos detalles. Si quieres profundizar más, te recomiendo revisar el contenido de arriba.
- Haskell Course: Notas y videos de un curso de Haskell.
- Intro to Haskell Syntax: Lo básico de Haskell.
- Typeclasses: Polymorphism in Haskell: Lo básico sobre tipos no tan básicos.