Haskell in 5 steps
Haskell is a general purpose, purely functional programming language. This page will help you get started as quickly as possible.
1 Install Haskell
Haskell, like most other languages, comes in two flavors: batch oriented (compiler) and interactive (interpreter). An interactive system gives you a command line where you can experiment and evaluate expressions directly, and is probably a good choice to start with.
|GHC||Compiler and interpreter (GHCi)||Probably the most feature-complete system|
|Hugs||Interpreter only||Very portable, and more lightweight than GHC.|
While both GHC and Hugs work on Windows, Hugs has perhaps the best integration on that platform. There is also information available on installing Haskell software on Mac OS X.
2 Start Haskell
Open a terminal. If you installed GHC, type ghci (the name of the executable of the GHC interpreter) at the command prompt. If you installed Hugs, type 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>
And you are presented with a prompt. The Haskell system now attentively awaits your input.
3 Write your first Haskell program
If you've learned to program another language, your first program probably was "Hello, world!", so let's do that:
Prelude> "Hello, World!" "Hello, World!"
The Haskell system evaluated the string, and printed the result. Or we can try a variation to print directly to standard output:
Prelude> putStrLn "Hello World" Hello World
Using a Haskell compiler, such as GHC, you can compile the code to a standalone executable. Create a source file hello.hs containing:
main = putStrLn "Hello, World!"
And compile it with:
$ ghc -o hello hello.hs
You can then run the executable (./hello on Unix systems, hello.exe on Windows):
$ ./hello Hello, World!
4 Haskell the calculator
Let's do something fun. In Haskell, your first true program is the factorial function. So back to the interpreter now and let's define it:
Prelude> let fac n = if n == 0 then 1 else n * fac (n-1)
This defines a new function called fac which computes the factorial of an integer.
We can now run fac on some argument:
Prelude> fac 42 1405006117752879898543142606244511569936384000000000
Congratulations! Programming made easy. Note that if you're using Hugs, you'll need to load the definition of fac from a file, fac.hs, containing:
fac n = if n == 0 then 1 else n * fac (n-1)
And run it with Hugs as follows (this also works in GHCi):
Hugs.Base> :load fac.hs Main> fac 42 1405006117752879898543142606244511569936384000000000
We can of course compile this program, to produce a standalone executable. In the file fac.hs we can write (and let's use elegant pattern matching syntax just for fun):
fac 0 = 1 fac n = n * fac (n-1) main = print (fac 42)
which can then be compiled and run:
$ ghc -o fac fac.hs $ ./fac 1405006117752879898543142606244511569936384000000000
5 Where to go from here
There are many good Haskell tutorials and books. Here are some we recommend:
- Haskell in 10 minutes
- Yet Another Haskell Tutorial (English)
- A Gentle Introduction to Haskell (English, File:GentleFR.pdf)
For a complete list of textbooks, references and tutorials:
Join the community!
Talk to others in the Haskell community: