Haskell

Join the Haskell Track
Haskell is a functional programming language which is pure and statically-typed. It's known for lazy evaluation, where evaluation is deferred until necessary, and its purity, where monads are used for working with side-effects.
Join the Haskell Track
Track mentors

15 Mentors

Our mentors are friendly, experienced Haskell developers who will help teach you new techniques and tricks.
Track students

9,084 Students

Join thousands of students who have enjoyed learning and improving their skills by taking this track.
Track exercises

96 Exercises

Hundreds of hours have gone into making these exercises fun, useful, and challenging to help you enjoy learning.

About Haskell

{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Web.Scotty

main = scotty 3000 $
  get "/:who" $ do
    who <- param "who"
    text $
      "Beam " <> who <> " up, Scotty!"

Haskell is a general-purpose programming language known for being purely functional, non-strict with strong static typing and for having type inference.

Purely functional means that you don't update variables or modify state. Pure functions will always return the same value given the same input and will do nothing else. Functions that are referentially transparent are more predictable and more composable. Non-strict (somewhat like lazy) means that you can express infinite data structures. Strong static typing means that a lot of program errors are caught during compilation. Type inference means that the compiler can often figure out the type of a value by itself. The compiler can also tell you if a value has conflicting types in different parts of the code.

There are more than 10,000 free third-party packages available at Hackage, the Haskell community's central package archive, and you can download them using the Stack tool that Exercism also uses.

You can also read the free book Learn You a Haskell for Great Good or follow the interactive tutorial at tryhaskell.org.

Join the Haskell track

To me, the standout track has been the Haskell track.

With only a very limited grasp of functional programming, the frequent and insightful comments I received were invaluable in getting to know the language.

Relaxed. Encouraging. Supportive.

Meet the Haskell Track mentors

Once you join the Haskell language track, you will receive support and feedback from our team of mentors. Here are the bios of a few of the mentors of this track.

Avatar of Alex Kavanagh

Alex Kavanagh https://github.com/ajkavanagh

Haskell is a mind expanding language and I love the way it changes how you think about programming. I'm still fairly new to Haskell, but was a seasoned Schemer in the past, and use FP techniques whenever they are appropriate.
Avatar of Simon Shine

Simon Shine https://simonshine.dk

Haskell has been my favourite programming language since 2012. I have been a classroom teacher on a Haskell course for a number of years. Today I spend my spare time making FOSS projects in Haskell and learning about all the great features they don't teach you in school.
Avatar of Brooks J Rady

Brooks J Rady thelostlambda.xyz

Writing in Haskell isn't just a new syntax, it's a new mindset. It provides learners with a way to rediscover the beauty in programming.
Avatar of Cody Goodman

Cody Goodman Real World Functional Programming, Haskell, Nix, And More

The mythical real-world professional Haskell programmer. I believe functional programming is a better general purpose paradigm for the real world. I want to teach others functional programming well enough to see if they agree!
Avatar of Matt Parsons

Matt Parsons To Overcome

I taught myself Haskell in college as a mindbending exercise, and I've been using it professionally ever since. I love helping people learn the language, from beginners to industrial professionals!
Avatar of Peter Tillemans

Peter Tillemans https://github.com/ptillemans

I am an electronics engineer and language geek who learned programming on an hp-41 and C-64. Now I do mostly java, javascript, python, rust and haskell. I believe that code should sing its intent so the last row in the hall understands the last syllable.
Fun. Challenging. Interesting

Community-sourced Haskell exercises

These are a few of the 96 exercises on the Haskell track. You can see all the exercises here.

Raindrops
easy
strings
Connect
hard
maybe
ISBN Verifier
easy
algorithms
Roman Numerals
medium
maybe
Difference Of Squares
easy
number theory
math
Simple Cipher
medium
io monad
mutable state
random
Passionate. Knowledgeable. Creative.

Meet the Haskell Track maintainers

The Haskell Maintainers are the brains behind the Haskell Track. They spend their spare time creating interesting and challenging exercises that we can all learn from. We are incredibly grateful for their hard work. Here are the bios of a few of the maintainers of this track.

Avatar of Peter Tseng

Peter Tseng

I taught myself Haskell as a logical next step after having learned OCaml. Although I don't use it for my job, I find it an interesting language; I especially enjoy its type system. I'm mostly a "break glass in case of emergency" maintainer.
Avatar of Simon Shine

Simon Shine https://simonshine.dk

I've been a classroom teacher in compilers and various functional languages for five years. Having pure functions and isolation of side-effects are fundamental to separation of concerns. Strong, static types, type inference and algebraic types are hard for me to live without.

Get started with the Haskell track. As with everything on Exercism, it's 100% free!

Join the Haskell Track