如何将 monadic 函数转换为 monadic 状态转换器?
How can I turn a monadic function into a monadic state transformer?
基本上,我想要的是:
stateIO :: (s -> IO (a, s)) -> StateT s IO a
stateIO f = do
r <- get
(a, r') <- liftIO $ f r
put r'
return a
我试过用state
,但是里面的liftIO
有问题。有没有另一种更聪明的方法,无需手动解包元组?
哦,好吧。谢谢@bisserlis。
stateIO = StateT
(可能用于避免单态限制)。
基本上,我想要的是:
stateIO :: (s -> IO (a, s)) -> StateT s IO a
stateIO f = do
r <- get
(a, r') <- liftIO $ f r
put r'
return a
我试过用state
,但是里面的liftIO
有问题。有没有另一种更聪明的方法,无需手动解包元组?
哦,好吧。谢谢@bisserlis。
stateIO = StateT
(可能用于避免单态限制)。