Haskell `StateT a STM b` 中的 IO 操作
Haskell IO action in `StateT a STM b`
我想 运行 randomIO
在我的 StateT a STM b
中,但我得到这个错误:
Expected type: StateT Session STM Float
Actual type: IO Float
所以我尝试从 Control.Monad.Trans.Class
lift
'ing(由 State 的 Strict 模块重新导出):
Expected type: StateT Session STM Float
Actual type: StateT Session IO Float
哪个更近,但不完全在那里。我不能 liftIO
因为 STM
没有 MonadIO
实例。
我怎样才能编译它,这样我就可以 运行 randomIO
inside STM
inside 我的 StateT
?
根据评论,我正在尝试一些愚蠢的事情。相反,我使用 randomRs (0.0, 1.0) g
将我需要的随机列表 Float
传递给了我的函数。
我想 运行 randomIO
在我的 StateT a STM b
中,但我得到这个错误:
Expected type: StateT Session STM Float
Actual type: IO Float
所以我尝试从 Control.Monad.Trans.Class
lift
'ing(由 State 的 Strict 模块重新导出):
Expected type: StateT Session STM Float
Actual type: StateT Session IO Float
哪个更近,但不完全在那里。我不能 liftIO
因为 STM
没有 MonadIO
实例。
我怎样才能编译它,这样我就可以 运行 randomIO
inside STM
inside 我的 StateT
?
根据评论,我正在尝试一些愚蠢的事情。相反,我使用 randomRs (0.0, 1.0) g
将我需要的随机列表 Float
传递给了我的函数。