Playing with the State Monad: Using 'get' and 'put' from MonadState
Playing with the State Monad: 'pop' in terms of 'get' and 'put'
Playing with the State Monad: 'push' in terms of 'get' and 'put'