Menu Close

Etiqueta: Haskell

I1M2018: Programa en Haskell para reconocer tautologías

En la primera parte de la 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).

Los apuntes correspondientes a la clase son

El código correspondiente es

I1M2018: Definiciones de tipos en Haskell

En la primera parte de la 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.

Los apuntes correspondientes a la clase son las tres primeras secciones del tema 9

Como tarea para la próxima clase se ha propuesto resolver de manera colaborativa los ejercicios de la 8ª relación.

I1M2018: Ejercicios sobre cadenas en Haskell

En la segunda parte de la clase clase de hoy de Informática de 1º del Grado en Matemáticas hemos explicado cómo se instalan librerías de Haskell: en una consola se ejecutan las siguientes órdenes

cabal update
cabal install primes

La primera actualiza la lista de librerías y la segunda instala la librería de números primos. La documentación, con ejemplos, de dicha librería se encuentra aquí

Como ejemplo de uso de la librería hemos resuelto el problema Números libres de cuadrados de Exercitium.

A continuación, hemos comentado las soluciones de los ejercicios de la 6ª relación que trata de funciones sobre cadenas.

Los ejercicios, y sus soluciones, se muestran a continuación:

I1M2018: Funciones de orden superior en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas se han estudiado las funciones de orden superior.

En primer lugar, se han estudiado las funciones de procesamiento de listas (map y filter).

En segundo lugar, se ha estudiado cómo puede abstraerse los esquemas definición de funciones de recursión sobre listas mediante la función de plegado (foldr) y cómo con dicha función puede simplificarse la definición de funciones.

A continuación se ha visto cómo definir funciones con acumuladores y cómo simplificarlas con el patrón de plegado por la izquierda (foldl).

Finalmente, se ha visto cómo puede simplificarse la definición de funciones usando el operador de composición.

Los apuntes correspondientes a la clase son las 5 primeras secciones del tema 7

Por último, se ha comentado el blog de ejercicios (Exercitium)

  • Cada día, de lunes a viernes, se propone a las 7:00 un ejercicio.
  • Los ejercicios están clasificados por niveles: inicial, medio y avanzado (como resultado de las puntuaciones que reciban).
  • Se pueden escribir las soluciones en los comentarios.
  • Usar como nombre de usuario el UVUS.
  • El código se debe escribir entre una línea con <pre lang=”haskell”> y otra con </pre>
  • Sólo publicar soluciones distintas de las publicadas.