This repo is designed to teach the concepts behind functors, applicatives, monads and monoids.
Clone the repo.
Start with the functor branch. Have a look at the README, then run the specs and watch them fail. Your challenge is to make them pass, one at a time.
Move to applicatives next, then make it to monads!
If you get stuck, each branch has a corresponding answers branch - but no cheating!! You may want to check the answers branch each time you move on as the next branch builds on the previous one.