Learn You A Haskell for Great Good does one thing well I imho.
It discussed a random number generator to introduce the idea of internal state compared to output value.
When you pull a random number, the state of the generator changes, so that the next pulled value is different.
And this works really well to explain the State Monad.
(I'm still learning, and wading through terrible and good explanations)