如何从Haskell中的单子中提取值?
有什么办法可以把单子的“东西”去掉吗 我正在开发一个游戏,我现在正试图了解数据库。我觉得很好,但我买不到 例如,我有这个函数(希望您熟悉happstack)如何从Haskell中的单子中提取值?,haskell,monads,Haskell,Monads,有什么办法可以把单子的“东西”去掉吗 我正在开发一个游戏,我现在正试图了解数据库。我觉得很好,但我买不到 例如,我有这个函数(希望您熟悉happstack) 我在谷歌上搜索了一下,什么也没找到。您不应该以这种方式退出IO monad(除了unsafePerformIO函数),但您仍然可以在其中使用您的函数: process :: MonadIO m => m () process = do elems <- getAllThings let s
我在谷歌上搜索了一下,什么也没找到。您不应该以这种方式退出IO monad(除了
unsafePerformIO
函数),但您仍然可以在其中使用您的函数:
process :: MonadIO m => m ()
process = do
elems <- getAllThings
let smth = doSomeThingWithThings elems
-- ...
process::MonadIO m=>m()
过程=do
elems在elems之后,你可以这样想:你的整个程序是IO monad,你的模型是一堆在里面执行的纯函数。是的!!在用你的答案重新思考我的问题之后,我明白必须是这样!,我的游戏(正如你所说)是纯功能的,但用户界面是真实丑陋的世界,所以持久性部分也必须如此!你可能会喜欢(回答一个类似的StackOverflow问题)有一种从monad-use中去掉“things”的方法。
doSomeThingWithThings :: [Thing] -> Something
process :: MonadIO m => m ()
process = do
elems <- getAllThings
let smth = doSomeThingWithThings elems
-- ...