Coupons for Finding Success

The Validation course was our first long-form content on Type Classes. This was material that Julie developed for her meet-up group that was originally designed to highlight the difference between Monad and Applicative. Parts of it became an introduction to Monad in the Nesting Instinct blog post.

Now Book cover for Finding Success (and Failure) in Haskell by Julie Moronuki and Chris Martin

Finding Success (and Failure) in Haskell
this content has been adapted once more, in the form of a book entitled Finding Success (and Failure) in Haskell. We’ve revised and expanded what was in the course, edited some things for clarity, and added a bunch of new exercises.

Everyone who has an active Type Classes subscription as of today can get the book for free on Leanpub. If you’ve been issued a coupon, on your account page you can find a link under the section entitled “Leanpub coupons”. The link can be used twice, so you can give a copy to a Haskell-curious friend.

Outline

Finding Success starts out at a very beginner place and then ramps up at a fairly quick pace, as you can see from perusing the chapter list:

  1. Introduction to case expressions
  2. Case expressions practice
  3. Validation functions
  4. The Maybe Monad
  5. Refactoring with Either
  6. Working with newtypes
  7. Introducing Applicative
  8. Refactoring with Validation
  9. Better error messages
  10. Coercible
  11. Optics

Although not intended as a thorough introduction to Haskell, it is sufficiently self-contained so that an ambitious Haskell novice can get through the entire thing. We don’t dwell on the formalities of Applicative and Monad, but rather keep a practical focus on how they help improve the motivating project that we iterate upon throughout the book.

Progress

The book is currently in early access but complete enough to start reading now. Our major remaining tasks are:

  • Write the last two chapters (chapters 1-9 are complete)
  • Add some more exercises
  • Copy editing and some formatting fixes
  • Add an EPUB release (currently PDF format is available)