"This assumes you are familiar with Haskell typeclasses and basic category theory."Where do I learn basic category theory? Anything better than just perusing wikipedia?

 The Rosetta stone paper: http://math.ucr.edu/home/baez/rosetta.pdfalso some preliminaries (books by Simmons, Awodey and Lawvere/Schanuel, spivak):http://arxiv.org/abs/1302.6946http://www.reddit.com/r/math/comments/1eiyid/category_theory...http://blog.begriffs.com/2012/07/order-of-lambda.html
 There was a UReddit course several months back, those videos might still be up. Where to go really depends on what you want to learn. If you just want to get a general feel for it, Wikipedia's probably the best place. If you want to actually learn the subject, it's going to take some studying. If you don't have any abstract algebra you'll almost certainly benefit from learning some first. I found Dummit & Foote and Artin to both be useful texts for abstract algebra, and Awodey to be useful for category theory.
 Try the free online textbook Category Theory for Computing Science by Michael Barr and Charles Wells [1]. It's a true textbook with exercises and lots of content.
 If you have time, Steve Awodey's book "Category Theory" is both beginner-friendly and helpful. You can get a PDF of an early pre-print online. He covers monads towards the end. If you are an experienced Haskell programmer, I've seen a few "Category Theory for Haskell programmers" tutorials around. That all said, I don't think that knowledge of Category Theory is a prerequisite to effective programming in Haskell (or any other language that features monads).
 This one is good, but more Haskell than category theory.
 It first clicked for me when reading Barr and Wells' Category Theory for Computing Science [0], but I don't know about your mathematical background. Category theory is algebra, so it's probably advisable to study basic group theory before tackling category theory. (I have a hard time seeing how functors make sense until you've understood the general concept of a homomorphism, which is perhaps easiest to do in the context of groups).
 "Sets for Mathematics" by Lawvere/Rosebrugh. Learning category theory via the category of sets.Only requires some comfort in proof writing, at least what would be covered in a first course in discrete math.Having some Linear Algebra, Groups, Rings, Topology, provide some concrete structures to help contextualize the material but it is not required.