Desarrollo del comando wc de Unix en Haskell

wc (en referencia a los términos ingleses “word count”) es un comando utilizado en el sistema operativo Unix que se utiliza para saber el número de palabras, líneas y caracteres de un fichero. Por ejemplo, si tenemos un fichero ciudades.txt cuyo contenido es

podemos contar con wc sus líneas, palabras y caracteres como sigue

En Haskell se pueden desarrollar programas simples con análogo comportamiento. Por ejemplo se puede contar las líneas del fichero como sigue

El contenido del programa CuentaLineas.hs es simplemente

Read More “Desarrollo del comando wc de Unix en Haskell”

El tipo abstracto de datos de las pilas en Haskell

En este artículo continúo la serie dedicada a los tipos de datos abstractos (TAD) en Haskell presentando el TAD de las pilas.

En artículos anteriores presenté los TAD de los polinomios y el de los conjuntos. En éste voy a presentar el TAD de las pilas y sus implementaciones en Haskell.

Al igual que hice en los anteriores TAD, usaré módulos, funciones de escritura y QuickCheck para conseguir la abstracción, independencia y certificación de los resultados de las implementaciones.

El contenido del resto del artículo es el siguiente: el TAD de las pilas, las implementaciones en Haskell mediante tipos algebraicos y mediante listas y la comprobación con QuickCheck de sus propiedades.
Read More “El tipo abstracto de datos de las pilas en Haskell”

El tipo abstracto de datos de los conjuntos en Haskell

En este artículo continúo la serie dedicada a los tipos de datos abstractos (TAD) en Haskell. El objetivo de la serie es la elaboración del tema de TAD del curso de Informática del Grado en Matemáticas.

En el artículo anterior presenté el TAD de polinomios. En éste voy a presentar los TAD de conjuntos y sus implementaciones en Haskell.

Al igual que hice en el de polinomio usaré módulos, importaciones cualificadas, indefiniciones y funciones de escritura para conseguir la abstracción e independencia de los resultados de las implementaciones.

El contenido del resto del artículo es el siguiente: el TAD de los conjuntos y su implementación mediante listas no ordenadas con y sin duplicados, el TAD de los conjuntos ordenados y su implementación mediante listas ordenadas sin duplicados, el TAD de los conjuntos de números naturales y su implementación
mediante números binarios.
Read More “El tipo abstracto de datos de los conjuntos en Haskell”