I1M2015: Introducción a la programación con Haskell

En la primera parte de la clase de hoy del curso Informática (de 1º de Grado en Matemáticas se ha explicado el tema 2 en el que se hace una introducción a la programación con Haskell usando emacs como entorno de programación. Concretamente, se ha explicado cómo

  • usar Haskell como calculadora aritmética (con las funciones +, -, *, /, div y ^).
  • escribir guiones de Haskell en emacs.
  • cargar los guiones y evaluar expresiones con las funciones definidas.

También se han comentado las funciones sobre números, listas y booleanos en el resumen de funciones.

Las transparencias usadas son las del tema 3

I1M2015: Introducción a la programación funcional

En primera parte de la clase de hoy del curso de Informática (de 1º de Grado en Matemáticas) se ha presentado la asignatura siguiendo el resumen del proyecto docente y los materiales en la página de la asignatura:

Se ha explicado cómo instalar los sistemas y se ha mostrado el uso de Haskell y emacs (la sesión está grabada en este vídeo) y el proceso para la solución colaborativa de ejercicios (la sesión está grabada en este vídeo)

Se ha comentado el sistema de evaluación y se ha anunciado las fechas de los exámenes de todo el curso.

La segunda parte de la clase ha consistido en una introducción a la programación funcional basada en el tema 1. Se ha explicado

  • cómo definir y evaluar funciones en Haskell,
  • cómo comprobar propiedades de funciones en Haskell con QuickCheck,
  • cómo se resuelve un problema mediante programación imperativa y funcional,
  • los rasgos característicos de la progración funcional con Haskell,
  • los antecedentes históricos de Haskell y
  • cómo definir funciones mediante recursión y comprensión.

A lo largo del curso se profundizará en el estudio de los anteriores conceptos.

Libro de exámenes de programación funcional con Haskell (del 30-nov-2009 al 15-sep-2015)

He actualizado el libro Exámenes de programación funcional con Haskell. El libro es una recopilación de los exámenes de la asignatura de Informática (de primero del Grado en Matemáticas) desde el curso 30 de noviembre de 2009 al 15 de septiembre de 2014.

Tras la ampliación, el libro contiene 129 exámenes y 833 ejercicios.

Este libro es el complemento de los anteriores:

Reseña: Exploring theories with a model-finding assistant

Se ha publicado un artículo de automatización del razonamiento titulado Exploring theories with a model-finding assistant.

Sus autores son Salman Saghafi, Ryan Danas y Daniel J. Dougherty (del Applied Logic and Security Lab en el Worcester Polytechnic Institute, Worcester, Massachusetts, USA).

Su resumen es

We present an approach to understanding first-order theories by exploring their models. A typical use case is the analysis of artifacts such as policies, protocols, configurations, and software designs. For the analyses we offer, users are not required to frame formal properties or construct derivations. Rather, they can explore examples of their designs, confirming the expected instances and perhaps recognizing bugs inherent in surprising instances.

Key foundational ideas include: the information preorder on models given by homomorphism, an inductively-defined refinement of the Herbrand base of a theory, and a notion of provenance for elements and facts in models. The implementation makes use of SMT-solving and an algorithm for minimization with respect to the information preorder on models.

Our approach is embodied in a tool, Razor, that is complete for finite satisfiability and provides a read-eval-print loop used to navigate the set of finite models of a theory and to display provenance.

El trabajo se ha presentado en el CADE-25 (The 25th International Conference on Automated Deduction).

El código en Haskell del sistema Razor se encuentra aquí.

Este trabajo puede servir en los cursos de Lógica informática, Lógica matemática y fundamentos, Razonamiento automático y Lógica computacional y teoría de modelos.