【发布时间】:2012-03-08 00:49:32
【问题描述】:
如果我有一堆 monad,比如 IO、State 和 Error,以及只使用 IO 和 Error 的函数。如何从堆栈中“删除”中间的 State monad 以便我可以使用我的函数?如果顺序是IO、Error、State,我可以使用lift 来匹配类型,但如果monad 堆栈包含IO 和Error 和可能以任何顺序的其他单子。例如:
fun :: ErrorT String IO ()
fun = throwError "error"
someCode :: ErrorT String (StateT Int IO) ()
someCode = do
-- I want to use fun here
【问题讨论】:
标签: haskell monads monad-transformers