如何将monadic函数转换为monadic状态变换器?

时间:2015-04-11 09:21:08

标签: haskell io monads state

基本上,我想要的是:

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存在问题。有没有其他方法可以更聪明,没有手动元组拆包?

1 个答案:

答案 0 :(得分:2)

好吧,好吧。谢谢@bisserlis。

stateIO = StateT

(也许应用于避免单态限制)。