有什么办法可以消除单子(monad)上的“东西”吗?
我正在开发游戏,现在尝试了解数据库。我发现 happstack
很好,但我听不懂。
例如,我有此功能(希望您熟悉happstack
)
getAllThings :: MonadIO m => m [Thing]
getAllThings = do
elems <- query GetThings
return elems
所以我得到
m [Things]
,但是我不能在我的模型中使用它!例如doSomeThingWithThings :: [Thing] -> Something
我用谷歌搜索,但没有发现任何东西。
最佳答案
您不应该以这种方式退出IO monad(unsafePerformIO
函数除外),但是您仍然可以在其中使用函数:
process :: MonadIO m => m ()
process = do
elems <- getAllThings
let smth = doSomeThingWithThings elems
-- ...
关于haskell - 如何从Haskell的monad中获取值(value)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7314789/