[Haskell-beginners] Using monad with arrow

Stephen Tetley stephen.tetley at gmail.com
Mon Mar 1 08:25:20 EST 2010


Hi Jarno

A cursory look at the CouchMonad says it is build upon the IO monad so
you won't be able to safely extract values out of it. This suggests
that you should "run" HXT functions within the CouchMonad monad.

The HXT library has various run_ functions - runIOLA, runSt, ... - to
run a computation and produce a value. I don't know the HXT library,
so don't know which particular run function to use, but a viable
construction might look like one of these two:


 processReplacement elementId docId state0 =
   do
     node <- toXNode docId
     let ans = runSt (setNode node `when` idMatches elementId) state0
     return ans

Or maybe runIOLA:

 processReplacement elementId docId =
   do
     node <- toXNode docId
     ans <- runIOLA (setNode node `when` idMatches elementId)
     return ans

Best wishes

Stephen


More information about the Beginners mailing list