---
title: Functional Programming & Haskell
description: Functional programming builds software from pure functions and immutable data; Haskell is its purest mainstream language. You will learn types, higher-order functions, monads and how FP ideas transfer to any language.
category: programming-tech
subcategory: programming-languages
difficulty: beginner, intermediate, advanced
url: /subject/haskell-functional-programming
---

# Functional Programming & Haskell

Functional programming builds software from pure functions and immutable data; Haskell is its purest mainstream language. You will learn types, higher-order functions, monads and how FP ideas transfer to any language.

## Available Resources

3 Books • 3 Courses • 2 Websites

## Courses

### 1. Category Theory

**Author:** Bartosz Milewski

Recorded lecture series by Bartosz Milewski introducing category theory for programmers: categories, morphisms, initial and terminal objects, products and coproducts, functors, exponentials, natural transformations and monads, illustrated with Haskell. Viewers learn to connect categorical constructions to type systems and functional programming.

**Difficulty:** Intermediate | **Price:** Free

**Link:** https://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_

**Tags:** category-theory, functors, natural-transformations, monads, haskell, functional-programming

### 2. Haskell MOOC (University of Helsinki)

**Author:** Joel Kaasinen, Antti Laaksonen

Two-part self-paced functional programming course from the University of Helsinki, worth 10 ECTS credits. Exercises are automatically checked against test suites, and the material is actively maintained against current GHC and Stack.

**Difficulty:** Beginner | **Language:** English | **Price:** Free

**Link:** https://haskell.mooc.fi/

**Tags:** haskell, functional-programming, type-systems, monads, recursion

### 3. CIS 194: Introduction to Haskell (Spring 2013)

**Author:** Brent Yorgey

Penn's twelve-week Haskell course by Brent Yorgey, with lecture notes and graded homework covering algebraic data types, type classes, laziness, folds, monoids, functors, applicatives and monads. Tooling references predate modern Cabal and Stack.

**Difficulty:** Beginner | **Language:** English | **Price:** Free

**Link:** https://www.cis.upenn.edu/~cis1940/spring13/

**Tags:** haskell, functional-programming, algebraic-data-types, lazy-evaluation, monads

## Books

### 1. Effective Haskell: Solving Real-World Problems with Strongly Typed Functional Programming

**Author:** Rebecca Skinner

Rebecca Skinner's 668-page 2023 book on writing production Haskell, covering monad transformers, type families, concurrency, database access and RESTful services. The most current major Haskell book, written against modern GHC extensions and tooling.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/1680509349?tag=edmonddante07-20

**Tags:** haskell, functional-programming, monad-transformers, type-level-programming, concurrency

### 2. Programming in Haskell (2nd Edition)

**Author:** Graham Hutton

Graham Hutton's Cambridge University Press textbook, second edition, building Haskell from first principles through 120 exercises. Covers type classes, recursion, folds, monads, reasoning about programs and a compiler case study. The author's site hosts free lecture videos and slides.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/1316626229?tag=edmonddante07-20

**Tags:** haskell, functional-programming, type-classes, monads, program-reasoning

### 3. Category Theory for Programmers (free PDF edition)

**Author:** Bartosz Milewski

Bartosz Milewski's category theory course for working programmers, as a free typeset PDF with Haskell, Scala, OCaml and Reason editions. Covers functors, natural transformations, Kleisli categories, monads as monoids in endofunctor categories, free monads and comonads.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://github.com/hmemcpy/milewski-ctfp-pdf

**Tags:** category-theory, functional-programming, haskell, monads, functors

## Websites

### 1. Learn You a Haskell for Great Good! (Community Version)

**Author:** Miran Lipovaca

Community-maintained fork of Miran Lipovaca's introductory Haskell text, forked with the author's permission and updated as the language evolves. Covers types, type classes, recursion, higher-order functions, functors, applicatives and monads. Conceptual rather than project-oriented.

**Difficulty:** Beginner | **Language:** English | **Price:** Free

**Link:** https://learnyouahaskell.github.io/

**Tags:** haskell, functional-programming, type-classes, monads, higher-order-functions

### 2. Typeclassopedia

**Author:** Brent Yorgey

Brent Yorgey's reference to Haskell's standard type class hierarchy, covering Functor, Applicative, Monad, Monoid, Foldable, Traversable, Category, Arrow and Comonad with their laws, intuitions, exercises and primary references. Readers understand how the classes relate and why their laws matter.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://wiki.haskell.org/Typeclassopedia

**Tags:** haskell, type-classes, monads, functors, functional-programming

---

*This content is part of Dantes.io - Your Treasure Map to Knowledge*

*Curated by humans at Dantes.io. Personal study use welcome; republishing this curation requires permission (team@dantes.io).*

View this page online: https://dantes.io/subject/haskell-functional-programming