Hello,
I have a function that returns its value in a monad, and I'd like to use that value in a function that returns an arrow, but I cannot figure out how to do that. The monad in this case is CouchMonad and the arrow is ArrowXml, but I guess that doesn't really matter.
For example, the function that returns its value in a monad:
toXNode :: String -> CouchMonad XNode
and a function that returns an arrow:
processReplacement :: (ArrowXml a) => String -> String -> a XmlTree XmlTree
In processReplacement I'd like to get a value from toXNode function, take it out from the monad and use the plain XNode value. Were it all simply CouchMonad, it would be something like this:
processReplacement elementId docId =
do
node <- toXNode docId
setNode node `when` idMatches elementId
But this is an arrow, so I need something different. I've read quite a few arrow articles and tutorials, but couldn't yet grasp how to do this and what is involved. Any ideas or pointers to examples?
Thanks!
BR,
Jarno