[Haskell-beginners] Using monad with arrow

Jarno Antikainen jarno.antikainen at iki.fi
Mon Mar 1 06:31:33 EST 2010


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 =
     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? 



More information about the Beginners mailing list