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
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
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
-- ...