proc p -> do ... (result, final_state) <- (|runState cmd|) init_state
>>> runPureEff $ runState 10 $ \st -> do n <- get st pure (2 * n) (20,10)
>>> import System.Random.Stateful >>> let pureGen = mkStdGen 137 >>> runStateGen pureGen randomM :: (Int, StdGen) (7879794327570578227,StdGen {unStdGen = SMGen 11285859549637045894 7641485672361121627})
>>> import System.Random.Stateful >>> let pureGen = mkStdGen 137 >>> runStateGenT pureGen randomM :: IO (Int, StdGen) (7879794327570578227,StdGen {unStdGen = SMGen 11285859549637045894 7641485672361121627})