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 pasos – http://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 Haskell – http://www.lcc.uma.es/~blas/pfHaskell/gentle/index.html
Puede probar Haskell en linea con TryHaskell – http://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 <[email protected]>
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