I'm having a bit of trouble understanding what the type parameters indicate in the case of the State monad, but also for the other mtl monads as well. Insofar as I understand it, when I compose a State monad, as in State String Int, what I really have is StateT String Identity Int. In the case of the method get for the MonadState typeclass, it returns m s, what is the 'm' in this case? Is it the Identity monad, Identity Int? And in this case is the 's' which represents the type of the state a parameter to the 'm'?
Thank you, I'm obviously having a bit of trouble understanding Haskell's type system.