I cannot overemphasise how much easier it is to understand Monads once you've groked Functors and Applicatives. It allows you to build an intuition for the _general_ structure and purpose of the typeclasses instead of trying to start with Monads by viewing them through the lens of IO or State.