new file:   StateMonad.lhs