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

En el ejemplo anterior se ha usado el commando runghc que permite ejecutar programas Haskell sin necesidad de compilarlo. Otra forma consiste en compilarlo

y ejecutarlo

En el programa CuentaLineas.hs se han usado las siguientes funciones de Haskell

  • interact tal (interact f) escribe en la salida estándard el resultado de aplicar la función f a la cadena leida en la entrada estándard.
  • lines tal que (lines c) es la lista de las líneas de la cadena c
  • length tal que (length xs) es la longitud de la lista xs
  • show tal que (show x) es la cadena correspondiente a la expresión x

Modificando el programa anterior se puede obtener otro para calcular el número de palabras de un fichero. Por ejemplo,

El programa CuentaPalabras.hs es

También modificando el programa anterior se puede obtener otro para calcular el número de caracteres de un fichero. Por ejemplo,

El programa CuentaCaracteres.hs es

Estos ejemplos ilustran cómo puede usarse Haskell para aplicaciones del mundo real. Muchas más aplicaciones se enecuentran en el libro de B. O’Sullivan, J. Goerzen y D. Stewart Real World Haskell.