我想在我的 StateT a STM b
中运行 randomIO
但出现此错误:
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
实例。
如何对其进行编译,以便我可以在 StateT
内的 STM
内运行 randomIO
?
最佳答案
根据评论,我正在尝试一些愚蠢的事情。相反,我使用 randomRs (0.0, 1.0) g
将所需的随机 Float
列表传递给我的函数。
关于 `StateT a STM b` 中的 Haskell IO 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57440981/