I1M2016: Uso de las librerías HLint y Trace

En la segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha ecplicado el uso de las libretías HLint y Trace.

La librería HLint se instala ejecutando en una consola

Para explicar el uso de HLint se considera el programa ej1.hs en el que está definida la suma de una lista de números y cuyo contenido es

para analizarlo, se ejecuta en una consola

Siguiendo la sugerencia, cambiamos el contenido del programa ej1.hs y queda

Lo volvemos a analizar con HLint

Con lo que finalmente el programa queda

y al analizarlo

El segundo ejemplo que se explicó es en un programa con acumulador. El programa está en el fichero ej2.hs cuyo contenido es

Lo analizamos con HLint

Al incorporar las 2 sugerencias a ej2.hs el programa queda como sigue

Lo volvemos a analizar con HLint

a incorporar la sugerencia a ej2.hs cuyo contenido queda como sigue

Lo vovemos a analizar con HLint

Aunque no ha dado ninguna sugerencia, podemos eliminar la dunción auxiliar aux quedando el contenido de ej2.hs como sigue

Lo analizamos con HLint

Con lo que el program final se reduce a

Para explicar la librería Trace volvemos a considerar la 2ª definición de la suma de los elemntos de una lista; es decir, la versión inicial del ej2.hs

Para usar la librería Trace hauy que importarla añadiendo al principio del fichero la línea

Como la función recursiva es aux, para seguir su traza le añadimos como primera ecuación la siguiente.

Con estos cambios, el contenido del fichero es

Al evaluarlo

se observa la traza. La cadena de la traza se puede construir con la función printf de la librería Printf como se muestra a continuación

en donde se ha ajustado el ancho de la la columna del acumulador a 2 (mediante %2d) como se ve en la evaluación

I1M2016: Evaluación perezosa 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 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.

Los apuntes correspondientes a la clase son

Libro de exámenes de programación funcional con Haskell (versión del 27 de noviembre de 2016)

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 2009-10 al actual.

Tras la ampliación, el libro contiene 181 exámenes con 1.052 ejercicios.

Este libro es el complemento de los anteriores:

Los códigos del libro están disponibles en Github https://github.com/jaalonso/Examenes_de_PF_con_Haskell.