How to take out a value out of a monad in Haskell?

前端 未结 2 2003
被撕碎了的回忆
被撕碎了的回忆 2020-12-09 18:00

Is there any way to take \"things\" out of a monad?

I am developing a game, and I am now trying to understand about databases. I found happstack really nice, but I

相关标签:
2条回答
  • 2020-12-09 18:39

    After elems <- query GetThings the elems is [Thing] so <- inside do is about getting things out of monad (called bind operation). The last statement return put things inside a monad. So either you can call you other function after getting elems and before return or where ever you are calling getAllThings you can use extract the value using <- from the monad and pass it to your function

    0 讨论(0)
  • You are not supposed to exit IO monad this way (except unsafePerformIO function), but you can still use your function inside it:

    process :: MonadIO m => m ()
    process = do
              elems <- getAllThings
              let smth = doSomeThingWithThings elems
              -- ...
    
    0 讨论(0)
提交回复
热议问题