Haskell en Debian GNU/Linux

Haskell en Debian GNU/Linux

En esta entrada explicaremos como instalar y comenzar a programar en el lenguaje de programación funcional Haskell en Debian GNU/Linux.

Para entender la concepción del lenguaje Haskell y la programación funcional la mejor documentación es:  ¡Aprende Haskell por el bien de todos! http://aprendehaskell.es/
que es una traducción al español de: Learn You a Haskell for a Great Good! http://learnyouahaskell.com/

También es fundamental realice las siguientes lecturas y practicas:

Por que Haskell importa –   http://www.haskell.org/haskellwiki/Es/Por_que_Haskell_importa
Haskell en 5 pasoshttp://www.haskell.org/haskellwiki/Es/Haskell_en_5_pasos
Guía de Haskell para autoestopistas http://www.haskell.org/haskellwiki/Es/Gu%C3%ADa_de_Haskell_para_autoestopistas
Una introducción agradable a Haskellhttp://www.lcc.uma.es/~blas/pfHaskell/gentle/index.html

Puede probar Haskell en linea con TryHaskellhttp://tryhaskell.org/

.

Instalando Haskell en Debian GNU/Linux

En esta entrada usaremos Haskell via aptitude de Debian. Si desea conocer sobre Haskell en otras distribuciones o su codigo fuente para ser compilado dirijase a : http://www.haskell.org/platform/linux.html

En Debian Haskell es provisto mediante el paquete haskell-plataform http://packages.debian.org/search?keywords=haskell-platform

root@i5:~# aptitude show haskell-platform
Paquete: haskell-platform
Nuevo: sí
Estado: sin instalar
Versión: 2012.2.0.0
Prioridad: extra
Sección: haskell
Desarrollador: Debian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org>
Arquitectura: all
Tamaño sin comprimir: 30,7 k
Depende de: ghc (>= 7.4.1), ghc (< 7.4.1+), libghc-cgi-dev (>= 3001.1.8.2), libghc-cgi-dev (< 3001.1.8.2+), libghc-fgl-dev (>= 5.4.2.4), libghc-fgl-dev (<
5.4.2.4+), libghc-glut-dev (>= 2.1.2.2), libghc-glut-dev (< 2.1.2.2+), libghc-haskell-src-dev (>= 1.0.1.5), libghc-haskell-src-dev (< 1.0.1.5+),
libghc-html-dev (>= 1.0.1.2), libghc-html-dev (< 1.0.1.2+), libghc-hunit-dev (>= 1.2.4.2), libghc-hunit-dev (< 1.2.4.2+), libghc-mtl-dev (>=
2.1.1), libghc-mtl-dev (< 2.1.1+), libghc-network-dev (>= 2.3.0.13), libghc-network-dev (< 2.3.0.13+), libghc-opengl-dev (>= 2.2.3.1),
libghc-opengl-dev (< 2.2.3.1+), libghc-parallel-dev (>= 3.2.0.2), libghc-parallel-dev (< 3.2.0.2+), libghc-parsec3-dev (>= 3.1.2),
libghc-parsec3-dev (< 3.1.2+), libghc-quickcheck2-dev (>= 2.4.2), libghc-quickcheck2-dev (< 2.4.2+), libghc-regex-base-dev (>= 0.93.2),
libghc-regex-base-dev (< 0.93.2+), libghc-regex-compat-dev (>= 0.95.1), libghc-regex-compat-dev (< 0.95.1+), libghc-regex-posix-dev (>= 0.95.1),
libghc-regex-posix-dev (< 0.95.1+), libghc-stm-dev (>= 2.3), libghc-stm-dev (< 2.3+), libghc-syb-dev (>= 0.3.6.1), libghc-syb-dev (< 0.3.6.1+),
libghc-text-dev (>= 0.11.2.0), libghc-text-dev (< 0.11.2.0+), libghc-transformers-dev (>= 0.3.0.0), libghc-transformers-dev (< 0.3.0.0+),
libghc-xhtml-dev (>= 3000.2.1), libghc-xhtml-dev (< 3000.2.1+), libghc-zlib-dev (>= 0.5.3.3), libghc-zlib-dev (< 0.5.3.3+), libghc-http-dev (>=
1:4000.2.3), libghc-http-dev (< 1:4000.2.3+), cabal-install (>= 0.14.0), alex (>= 3.0.1), alex (< 3.0.1+), happy (>= 1.18.9), happy (< 1.18.9+),
ghc-haddock
Sugiere: haskell-platform-doc, haskell-platform-prof
Descripción: Standard Haskell libraries and tools
The Haskell Platform is a suite of tools and libraries that contain the most important and best supported components. It is meant to be a starting point for
Haskell developers who are looking for libraries to use.

Installing this meta package will also install the Debian packages containing the libraries and tools as specified in the official Haskell Platform, in the
version available in Debian. This may not be the version specified in the platform. If this is of relevance to you, please check them on the official Haskell
Platform homepage.
Página principal: http://hackage.haskell.org/platform/

.

Para instalar todo lo necesario para comenzar con Haskell en Debian realice el siguiente paso:

root@i5:~# aptitude install haskell-platform

.

Una vez instalado crearemos un archivo con extensión .hs y colocaremos lo siguiente:
main = putStrLn «Hola estoy aprendiendo haskell»

Haskell es un lenguaje compilado, los dos compiladores para Haskell GHC (Glasgow Haskell Compiler) y Hugs, en esta entrada usaremos ghc. Para mas información del mismo:

lenin@i5:~/haskell$ man ghc

Ahora la sintaxis es la siguiente:
lenin@i5:~/haskell$ ghc -o aprendiendohaskell aprendiendo_haskell.hs
[1 of 1] Compiling Main             ( aprendiendo_haskell.hs, aprendiendo_haskell.o )
Linking aprendiendohaskell …
lenin@i5:~/haskell$ ls -lah
total 1,1M
drwxr-xr-x  2 lenin lenin 4,0K feb 22 20:35 .
drwxr-xr-x 83 lenin lenin  12K feb 22 20:26 ..
-rwxr-xr-x  1 lenin lenin 1,1M feb 22 20:35 aprendiendohaskell
-rw-r–r–  1 lenin lenin  560 feb 22 20:35 aprendiendo_haskell.hi
-rw-r–r–  1 lenin lenin   49 feb 22 20:33 aprendiendo_haskell.hs
-rw-r–r–  1 lenin lenin 3,3K feb 22 20:35 aprendiendo_haskell.o

Podemos evidenciar que se crearon 3 archivos, uno de ellos es nuestro programa Haskell (aprendiendohaskell)

Ejecutamos nuestro programa y evidenciamos si hace lo que programamos:
lenin@i5:~/haskell$ ./aprendiendohaskell
Hola estoy aprendiendo haskell
lenin@i5:~/haskell$

Ahora también existen runhaskell y runghc que son parte del compilador GHC y aunque asemeja interpretar el código fuente que se le indique, en realidad compila al vuelo y muestra resultados.
lenin@i5:~/haskell$ runghc aprendiendo_haskell.hs
Hola estoy aprendiendo haskell
lenin@i5:~/haskell$

.

Comenzando con Cabal

Hackage es un repositorio de paquetes ó módulos de Haskell, aquí encuentran los paquetes disponibles: http://hackage.haskell.org/packages/archive/pkg-list.html

Actualizar el repositorio de paquetes haskell
lenin@i5:~/haskell$cabal update

Ver lista de paquetes haskell disponibles
lenin@i5:~/haskell$cabal list |less

Instalar un paquete haskell
lenin@i5:~/haskell$cabal install tupaquete

Ver la información un paquete haskell
lenin@i5:~/haskell$cabal info tupaquete

Ver la ayuda de cabal, para ver mas opciones disponibles:
lenin@i5:~/haskell$cabal help

Configuración de Cabal (el repositorio de paquetes al que nos conectamos, rutas usadas por cabal para cache, logs, librerías, etc…)
less /home/lenin/.cabal/config

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *