Es/Haskell en 5 pasos
Haskell es un lenguaje puramente funcional de propósito general. Esta página te ayudará a empezar a utilizarlo lo más rápido posible.
Instalación de Haskell
Haskell, como casi todos los otros lenguajes, viene en dos presentaciones: compilada (compilador) e interactiva (intérprete). Un sistema interactivo ofrece una línea de comandos donde puedes experimentar y evaluar expresiones directamente, por lo que es una buena elección para comenzar.
GHC | Compilador e intérprete (GHCi) | Probablemente el sistema más completo |
Hugs | Intérprete solamente | Muy portable, y más liviano que GHC. |
Mientras que tanto GHC como Hugs corren bajo Windows, Hugs tiene tal vez la mejor integración con dicha plataforma. También hay información sobre la instalación de haskell en Mac OS X.
Iniciar Haskell
Abre una terminal. Si has instalado GHC ingresa ghci (el intérprete de GHC). Si has instalado Hugs, ingresa hugs.
$ ghci ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.4, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base-1.0 ... linking ... done. Prelude>
Y se te presenta una línea de comandos. El sistema Haskell ahora está listo y esperando su entrada.
Escribe tu primer programa Haskell
Si has aprendido otro lenguaje, tu primer programa probablemente haya sido "Hola, mundo!", así que hagamos eso:
Prelude> "Hola, mundo!"
"Hola, mundo!"
El sistema Haskell evaluó la cadena, e imprimió el resultado. También podemos intentar una variante, que imprime directamente a la salida estándar:
Prelude> putStrLn "Hola mundo"
Hola mundo
Usando un compilador Haskell, como GHC, puedes compilar el código para producir un ejecutable. Crea un archivo fuente hola.hs que contenga:
main = putStrLn "Hola, mundo!"
Y compílalo con:
$ ghc -o hola hola.hs
Ahora podrás ejecutar el programa (./hola en sistema Unix, hola.exe en Windows):
$ ./hola Hola, mundo!
Haskell como calculadora
Hagamos algo divertido. En Haskell, tu primer programa real es la función factorial. Así que de vuelta al intérprete y vamos a definirla:
Prelude> let fac n = if n == 0 then 1 else n * fac (n-1)
Esto define una nueva función llamada fac que calcula el factorial de un entero.
Ahora podemos llamar fac sobre algún argumento.
Prelude> fac 42
1405006117752879898543142606244511569936384000000000
¡Felicitaciones! Es la programación hecha fácil. Si usas Hugs, necesitarás cargar la definición de fac de un archivo, fac.hs, que contenga:
fac n = if n == 0 then 1 else n * fac (n-1)
Y ejecutarlo con Hugs como sigue (esto también funciona en GHCi):
Hugs.Base> :load fac.hs
Main> fac 42
1405006117752879898543142606244511569936384000000000
Por supuesto podemos compilar este programa, para producir un ejecutable. En el archivo fac.hs podemos escribir (y usemos sintaxis elegante con ajuste de patrones para hacerlo más entretenido):
fac 0 = 1
fac n = n * fac (n-1)
main = print (fac 42)
el cual puede ser compilado y ejecutado:
$ ghc -o fac fac.hs $ ./fac 1405006117752879898543142606244511569936384000000000
¡Perfecto!
Hacia dónde ir desde aquí
Hay muchos tutoriales de Haskell y libros muy buenos. Estos son algunos que recomendamos:
Tutoriales
- Yet Another Haskell Tutorial (Inglés)
- Haskell-Tutorial (Inglés)
- A Gentle Introduction to Haskell (Inglés)
- Haskell Kurs (Alemán)
- Haskell.es (Español)
Cursos
- Programming in Haskell (Inglés)
- Programación funcional (Inglés, Español, Netherlands) (Nota: este usa una versión antigua de haskell; e.g. la entrada/salida ha cambiado desde entonces)
Referencias
- Tour of Haskell Syntax (este enlace parece funcionar)
- Haskell Reference
- Tour of the Haskell Prelude (este enlace parece funcionar)
- A tour of the Haskell Monad functions
Libros de texto
- The Haskell School of Expression
- Haskell: The Craft of Functional Programming
- Introduction to Functional Programming using Haskell
- An Introduction to Functional Programming Systems Using Haskell
- Algorithms: A functional programming approach
- The Haskell Road to Logic, Maths and Programming
Para más, ver Aprendiendo Haskell y libros y tutoriales.
Obteniendo ayuda
Si tienes preguntas, únete a la lista de distribución Haskell-Cafe o el Canal IRC y pregunta. Tambien puedes hacer preguntas aquí en el wiki, ver Preguntas y respuestas.
Información de soporte de Haskell para varios sistemas operativos: aquí.
Nota: Esta es una traducción del artículo original en Inglés : Haskell in 5 steps