The Typeclassopedia (https://wiki.haskell.org/Typeclassopedia) is the best source - other than the docs - okay, the second best source - assuming you aren't following a book - the third best source - um.
Taking a step back for a moment, re-examine the process of learning Haskell as a long-term one which necessarily occurs in phases unless you have a very large bladder. At some point between writing Hello World and writing useful code, you have to come to understand type classes. You need to understand the mechanisms of type classes. You need to understand the many important type classes that are used to expose common functionality (especially Functor/Applicative/Monad et al.). You will probably want to know the relationships between those major type classes and the historical, technical context in which some are used instead of others. In order to form this understanding, you'll probably be best served with an accurate definition, a few motivating examples, and hints for moving toward useful intuitions. You will probably want this information in a completely different order than anyone wants to present it in. That's what the Typeclassopedia is for.
So, you will probably know when you need the Typeclassopedia. The sensation ranges from "What the Belgium is an Applicative" to "What have burritos got to do with it?". And when you get to wanting the Typeclassopedia, you may also want "What I Wish I Knew When Learning Haskell" (http://dev.stephendiehl.com/hask/).
Have a nice day. Hopefully you'll thank me later.
This article has been part of a completely real series on Learning Haskell Without Hope.
Articles in the series:
banana | barbed wire | burrito | spock | stack | Typeclassopedia
See also our other fine series: