domingo, 20 de junio de 2010

Programar en Haskell en ubuntu

Haskell es un lenguaje de programación funcional puro, de alto nivel, en esta publicación veremos como usar este lenguaje en ubuntu y veremos algunos ejemplos; ya que estamos aprendiendo haskell en el curso de matemáticas y me pareció interesante comentar el uso del intérprete Hugs en ubuntu (y otras distribuciones GNU/Linux).
Hugs es un intérprete que entiende el lenguaje Haskell.

Por tanto veremos la instalación de Hugs en ubuntu:
Simplemente podemos instalar Hugs desde los repositorios, por ejemplo vamos al Gestor de Paquetes Synaptic y escribimos Hugs, allí lo marcamos para instalar y listo:


Otra opción de instalación es descargar el programa de la página principal, para instalarlo debemos compilarlo desde el código fuente (ver cómo instalar aplicaciones desde el código fuente)

La idea de esta publicación no es explicar en sí el lenguaje de programación Haskell, sino explicar su uso básico en sistemas GNU/Linux.

Por tanto veremos como ingresar a Hugs:
Una vez instalado ejecutamos Hugs desde la terminal, ingresamos a la terminal y escribimos Hugs; y allí ya podemos empezar a programar, como hugs es un intérprete a medida que lee el programa lo ejecuta, lleva a cabo lo que indica el programa, traduce el programa poco a poco, leyendo y ejecutando cada comando:


Para empezar a probar haskell podemos usarlo como una calculadora, por ejemplo tecleamos 3*5, o 2^3, etc; y también empezando a probar algunas funciones predefinidas por haskell como div, mod, min, max, etc:


Haskell es un lenguaje funcional, y las funciones juegan un papel esencial, muchas de ellas están predefinidas, pero nosotros podemos crear nuestras propias funciones.

Supongamos que quiero crear una función que devuelva el máximo entre 2 números enteros, y en caso de escribir los número iguales que muestre el mensaje de "error ambos números son iguales"; para hacer esto debo crear un archivo de texto (ejemplo en gedit) y escribir la función, también debo guardarlo con la extensión hs, luego debo ingresar a hugs y desde allí ir al archivo donde guardé la función; veamos este video de ejemplo:



El código de esta función es el siguiente:
maximo::Int->Int->Int
maximo a b |a>b         =a
           |a==b        = error"ambos números son iguales"
           |otherwise   =b


Como se ve en el video para ejecutar una función escrita en un archivo .hs al ingresar a hugs debo ingresar también a ese archivo; en la versión de Hugs para windows basta simplemente con ingresar a File/open/ y buscar el archivo, desde la terminal de GNU/Linux escribimos la ruta:

:load /home/sofiavitale/Escritorio/ejercicio.hs

Lo que está en rojo cambia según el usuario, lugar y nombre del archivo. 

Para crear ejecutables debes instalar el compilador ghc (también puedes hacerlo desde synaptic); es similar a la compilación de programas en c como les mostré anteriormente, la diferencia está en el compilador que en este caso es ghc, también puedes leer esta información.

Documentación sobre haskell:


http://www.haskell.org/haskellwiki/Haskell_en_5_pasos
http://www.lcc.uma.es/~blas/pfHaskell/gentle/
http://www.haskell.org/haskellwiki/Haskell.es
http://www.x.edu.uy/inet1.htm

Artículos relacionados



1 comentario:

  1. Hola

    Te recomiendo más ghci, el interprete que trae el compilador ghc.

    Las ventajas son varias, pero principalmente están las extensiones, que puedes obtener con el flag -fglasgow-exts.

    Tengo buenos recuerdos de hugs, pero ya nadie lo usa en el mundo de Haskell.

    ResponderEliminar