I1M2015: Evaluación perezosa en Haskell

En la segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado la evaluación perezosa en Haskell. Se han visto la estrategias de evaluación perezosa e impaciente, se han comparado respecto de la terminación y el número de pasos necesarios en las computaciones, se ha aplicado a la computación con estructuras infinitas y se han visto casos en los que se aumenta la eficiencia con evaluación estricta.

Como ejemplo, se ha estudiado el cálculo de los números primos mediante la criba de Erastótenes.

Finalmente, se ha explicado cómo instalar la librería de números primos mediante las siguientes órdenes del sistema

Como aplicación de la librería se han realizado cálculos con los primos de Mersenne.

Las transparencias usadas en la clase son las del tema 10

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:

LI2015: Sintaxis y semántica de la lógica de primer orden

En la clase de hoy del curso de Lógica Informática se ha presentado la sintaxis y la semántica de la lógica de primer orden como respuestas a las siguientes preguntas: ¿qué es una fórmula?, ¿qué significa que una fórmula verdadera?

En primer lugar, a partir de los ejemplos de representación del conocimiento, se han definido los símbolos lógicos (variables, conectivas, cuantificadores e igualdad) y los símbolos no lógicos (constantes, predicados y funciones) que forman el alfabeto del lenguaje de la lógica de primer orden.

A partir del alfabeto, se definen los términos, las fórmulas atómicas y las fórmulas del lenguaje.

Como medio del reconocimiento de fórmulas, se introducen los árboles de análisis. Con ello, respondemos a la primera de las preguntas iniciales.

En el estudio sintáctico, definimos el conjunto de las subfórmulas, el conjunto de las variables de un término, las ocurrencias libres y ligadas, el conjunto de las variables libres y ligadas y las fómulas cerradas y abiertas. Algunas de las definiciones anteriores se realizan por recursión sobre fórmulas o sobre términos.

En segundo lugar hemos estudiado la semántica, comenzando con distintas cuestiones sobre qué significa que una fórmula sea verdadera para resaltar su dependencia del universo, la interpretación de los símbolos no lógico y de las asignaciones a las variables libres.

Se han definido las estructuras de un lenguaje, las asignaciones a las variables y las interpretaciones de un lenguaje.

Se ha definido el valor de un término o de una fórmula en una interpretación. Con ello, respondemos a la segunda de las preguntas iniciales.

Las transparencias de esta clase son las páginas 1 a 34 del tema 7: