HackerTube.live
Books / Functional Programming

THE READING ROOM / BOOK GUIDE

Programming in Haskell

Graham Hutton

A university-level introduction to Haskell built around small programs, equational reasoning and the habits functional programming asks of beginners.

About the book

Graham Hutton's Programming in Haskell is a teaching text about the Haskell language and about functional programming as a way of thinking. It addresses readers who already program in some language but have not worked in a lazy, purely functional setting. The book's subject is the language itself: types, functions, recursion, lists, higher-order functions and the standard abstractions Haskell provides.

Hutton writes for students and self-learners rather than for working developers chasing production tooling. The emphasis falls on definitions and evaluation: how expressions reduce, how types constrain programs, and why equational reasoning suits this language. Examples are small and deliberately chosen, so the ideas stay visible instead of disappearing into a large application.

The book sits in the tradition of academic Haskell teaching, where the language doubles as a vehicle for concepts such as polymorphism, type classes and lazy evaluation. Expect a course-shaped progression. Libraries and industry practice get little attention.

How to read it

Work through the examples with a compiler open. Hutton's explanations reward typing the definitions yourself and watching how expressions evaluate, especially where laziness changes what happens and when. The exercises carry much of the learning. Skipping them leaves the prose thinner than it looks.

The pace is steady and the mathematics modest, but the vocabulary is new. Expect to reread sections on types and recursion before they settle. Readers coming from imperative languages may find the early adjustment hardest. Those with some discrete mathematics or logic will move faster. Keep a reference on Haskell syntax nearby for details the book treats briefly.

Who it suits

This suits undergraduates, conversion-course students and programmers who want a structured first pass at Haskell with an academic accent. It also helps readers who want to understand functional ideas well enough to carry them into other languages. Anyone seeking deployment advice, library tours or large-project patterns should look elsewhere.

Reading considerations

The text reflects Haskell as taught when it was written, so some tooling and library details will feel dated against current practice. Later editions exist, and a reader should check which one is in hand before relying on specifics. The book teaches the language rather than promising fluency, so pair it with independent practice.

Follow the HN conversation

34 different recommenders are recorded in the upstream dataset. These are AI-classified source counts, not an independent rating.

Search HN comments about this book ↗

Explore videos on the same subject ↗

Book notes prepared with DeepSeek, using catalogue records and Open Library subject information. They are reading guidance, not a personal review or a verified chapter-by-chapter account. Book details can vary by edition. HN data methodology · Book metadata and covers.