Starting with Haskell

As of March 2020, School of Haskell has been switched to read-only mode.

Introductory tutorials, teaching you Haskell, how to use the School, and some common libraries.

  • School of Haskell

    Learning Haskell at the SoH 1 Nov 2013School of Haskell

    How to take advantage of the School of Haskell to learn Haskell or improve your skills
  • Brent Yorgey

    Introduction to Haskell Brent Yorgey

    A basic introduction to Haskell based on a half-credit course (CIS 194) taught at the University of Pennsylvania. For more information, including accompanying homework assignments, see the [course web page]( For more information, including a list of resources and accompanying homework assignments, see [the course website](
  • Yann Esposito

    Haskell Fast & Hard Yann Esposito

    The SoH Version of Haskell Fast & Hard tutorial. From very beginner up to Monads in a very short and dense tutorial. This tutorial comes from []( If you prefer a static version you could always check it [here](, but the ability to interact with the code provides a great way to learn Haskell without installing anything on your computer. Furthermore, the School of Haskell version contains some exercises not present in the original version.
  • Bartosz Milewski

    Basics of Haskell Bartosz Milewski

    A gentle introduction to Haskell for beginners. The prerequisite for this series of tutorials is some knowledge of imperative programming, whether C++, Java, Pascal, you name it. If you have some familiarity with functional programming, that's even better. Since I came from an imperative background -- I can write some mean C++ code -- I'm familiar with the potential obstacles in embracing Haskell. There are many myths about functional programming, and Haskell in particular, that have no basis in reality. I will try to dispel them. One such myth is that you have to know advanced mathematics (category theory in particular) to be a good Haskell programmer. This is not true, and you'll find no high math in this series of tutorials. Another myth is that you can't do imperative programming in Haskell. This is technically true, in the sense that Haskell is able to reduce all imperative programming to pure functions, but in practice Haskell is the best imperative language that there is. For instance, it gives you full control over side effects. This is a nice thing in general, but it's a real life saver once you decide to write concurrent or parallel programs. In fact I was virtually pushed into functional programming by the necessities of concurrency. If the term "data race" is familiar to you, I don't need to convince you any more.
  • School of Haskell

    Libraries and Frameworks School of Haskell

    Introductions to useful libraries and frameworks