see also: http://hackage.haskell.org/packages/archive/mtl/latest/doc/html/Control-Monad-State-Lazy.html#v:state
Interesting. In that case, state f = StateT $ \s -> Identity (f s) allows "state" to replace "State" in that code.