[Haskell-beginners] Relation between Effects, Indexed monads, Free monads