A collection of recommended reading material for learning Haskell, Abstract Algebra, Category Theory, and such. You don’t need to read everything if you’re only interested in learning Haskell—but it wouldn’t hurt!

Suggestions

For Haskell, I suggest Thinking Functionally with Haskell [Bird 2014] and Haskell: The Craft of Functional Programming [Thompson 1999]. Real World Haskell [O’Sullivan et al. 2008] can be used but it must be read carefully as it is out of date and contains a significant number of errata.

For Category Theory, I suggest Lawvere’s Conceptual Mathematics [2009], Awodey’s Category Theory [2010], and Mac Lane’s Categories for the Working Mathematician [1998], in that order. Alternatively, the order can be reversed: Mac Lane can be used as a forcing function to read Awodey and Awodey can be used as a forcing function to read Lawvere.

For Abstract Algebra, and as preparation for Category Theory, I recommend Mac Lane’s Algebra [1999]. Lang’s Algebra [2002] might be useful as a reference, or if you’re really interested in abstract algebra.

General

How to Prove It [Velleman 2006 A wonderful book that introduces a structured method for proving things. Required reading for anyone who is interested in writing or understanding proofs. Introduction to Logic [Tarski 2013 A monumental work by one of the greatest logicians of all time. Everyone should read this book.

Haskell

Thinking Functionally with Haskell [Bird 2014 As a modern rewrite of [Bird 1998 Introduction to Functional Programming using Haskell [Bird 1998 One of the best introductory books on programming ever written. As the title suggests, this is not so much a Haskell book as a FP book that happens to use Haskell. It won’t teach you how to use libraries or spend much time on pragmatic issues, but it will teach you how to think about programs in a functional way. Programming in Haskell [Hutton 2007 Focuses on core langauge concepts and avoids advanced topics. It’s somewhat lightweight at only 171 pages, and its organization is a bit strange, but it is an excellent introduction to the Haskell language. Real World Haskell [O’Sullivan et al. 2008 This book presents a pragmatic introduction to writing Haskell with a focus on performance. Unfortunately, it contains a number of errata and has become somewhat obsolete. Use the online version and read the comments as many of them correct errors or explain other issues. Also see this summary of issues. The Haskell Road to Logic, Maths and Programming [Doets and Eijck 2004 This isn’t so much a Haskell book as a math book that uses Haskell for its examples. That said, it’s a wonderful introduction to the sort of mathematics that you can express in Haskell (which is quite a lot). Haskell: The Craft of Functional Programming [Thompson 1999 A well organized introductory text that does a good job of teaching and motivating the functional perspective. Might be paced a bit slowly for some, but others will enjoy its thoroughness. Parallel and Concurrent Programming in Haskell [Marlow 2013 Written by one of the implementors of Haskell’s parallel runtime. Absolutely wonderful book.

Category Theory

See also: Edward Kmett’s list on Quora.

Conceptual Mathematics [Lawvere and Schanuel 2009 A Category Theory text with few prerequisites, suitable for a “motivated high-schooler”. This is a great introduction to Category Theory for folks without a mathematical background and will prepare you to read some of the more advanced texts that follow. Categories for the Working Mathematician [Mac Lane 1998 Written for “working mathematicians”, this dense book is a considerable challenge even for graduate students. That said, it’s also the most comprehensive and thorough Category Theory text, written by one of the founders of the discipline. Category Theory [Awodey 2010 The standard modern text on Category Theory, and the best all around introduction. Sits somewhere between Lawvere and Schanuel [ 2009 Mac Lane [ 1998 Abstract and Concrete Categories: The Joy of Cats [Adámek et al. 2009 Sits somewhere between Lawvere and Schanuel [ 2009 Awodey [ 2010

Abstract Algebra

Algebra [Mac Lane and Birkhoff 1999 In the words of one of Mac Lane’s students, “I know of no book on pure mathematics more worth reading than this one”. Introduces algebra methodically and thoroughly from first principles. A much easier book than Categories for the Working Mathematician [Mac Lane 1998 A Book of Abstract Algebra [Pinter 2012 “Accessible but rigorous”, Pinter features plenty of exercises and uses an intuitive, informal, discussion-based approach rather than the more conventional definition-theorem-proof-corollary-example format. Recommended by Ollie Charles. Algebra [Lang 2002 Weighing in at over 900 pages, Lang is somewhere between a graduate-level textbook and some sort of beastiary of algebraic structures. Lang introduced a novel pedagogy for algebra that borrowed new ways of thinking from category theory and homological algebra, which has influenced subsequent books.