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