I1M2015: Declaraciones de clases y de instancias

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado las clases en Haskell. Concretamente,

  • cómo definir clases con class,
  • cómo se define la clase Eq,
  • cómo ver en GHCi la información de una clase con :info Eq,
  • cómo definir instancias con instance,
  • cómo se define Bool como instancia de Eq,
  • cómo definir subclases,
  • cómo se define Ord como subclase de Eq,
  • cómo se define Bool como instancia de Ord y
  • cómo definir tipos de datos con clases derivadas.

Las transparencias usadas en la clase son las paginas 35 a 41 del tema 9:

I1M2015: Programa en Haskell para reconocer tautologías

En clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado cómo construir un programa para determinar si una fórmula es una tautología.

Para ello se consideran las siguientes fases:

  1. definir un tipo de dato algebraico para las fórmulas proposicionales,
  2. definir un tipo de dato para las interpretaciones,
  3. definir una función para calcular los valores de las fórmulas en las interpretaciones
  4. definir una función para generar todas las posibles interpretaciones de una fórmula y
  5. definir una función que para decidir si una fórmula es tautología (es decir, su valor es verdadero en todas sus interpretaciones).

El código correspondiente es
Read More “I1M2015: Programa en Haskell para reconocer tautologías”

I1M2015: Definiciones de tipos en Haskell

En clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado la definición de nuevos tipos de datos y de funciones sobre dichos tipos. Concretamente, se ha visto

  • cómo definir tipos usando type,
  • cómo definir funciones con dominio o rango en tipos definidos usando type,
  • cómo definir tipos usando data,
  • cómo definir funciones con dominio o rango en tipos definidos usando data y
  • cómo definir tipos de datos recursivos usando como ejemplo los naturales, las listas y los árboles

Se ha insistido en la metodología de definición de funciones recursivas sobre tipos de datos escribiendo una ecuación por cada uno de los constructores del tipo de dato.

Finalmente, se comentaron las distintas soluciones del problema Números muy divisibles por 3 y la comparación de la eficiencia.

Las transparencias usadas en la clase son las paginas 1 a 21 del tema 9: