liftState :: Monad m => State a b -> StateT a m b
liftState f = do
  s <- get
  let (a, s') = runState f s
  put s'
  return a
liftState :: Monad m => State a b -> StateT a m b
liftState f = do
  s <- get
  let (a, s') = runState f s
  put s'
  return a
liftState f = do
  s <- get
  let (a, s') = runState f s
  put s'
  return a