
Thank you. Here is where things stand now
obtainCookies :: IO Curl -> String -> IO () obtainCookies curl responseBody = do curl' <- curl mapM_ (flip (curlResp curl') resourceOpts) $ screenScraping responseBody
and the error htmlParsing.lhs:78:2: Couldn't match expected type `[Char]' against inferred type `GHC.IO.Exception.IOException' Expected type: String Inferred type: IOError When using functional dependencies to combine MonadError IOError IO, arising from the dependency `m -> e' in the instance declaration at <no location info> MonadError String IO, arising from a use of `curlResp' at HtmlParsing.lhs:80:29-42 When generalising the type(s) for `obtainCookies' I'm way beyond my ken here, trying to grow. I have to do error handling (this will be production code when it grows up), got some suggestions on how to do so, but am flying blind in new territory. Any suggestions on how to proceed would be much appreciated. On Wed, Jan 26, 2011 at 3:13 PM, Daniel Fischer < daniel.is.fischer@googlemail.com> wrote:
On Wednesday 26 January 2011 23:51:18, Michael Litchard wrote:
Here's what I'm working with, followed by what I am trying to do, and the type error I get. I'm leaving things out that I do not think are important. Let me know if I'm missing nessecary info.
obtainCookies :: IO Curl -> String -> IO () obtainCookies curl responseBody = do curl' <- curl let collectedResources = screenScraping responseBody in mapM ( curlResp curl' resourceOpts)
collectedResources
Looks like you need a flip here:
in mapM (flip (curlResp curl') resourceOpts) collectedResources
return ()
If you're throwing away the results of the MapM'ed actions, use mapM_
obtainCookies curl responseBody = do curl' <- curl mapM_ (flip (curlResp curl') resourceOpts) $ screenScraping responseBody
this function does a monadic action (all I want is the cookies) and I don't need the return value. I am not sure that the final line return (), is what I want.
My primary question is this. how do I map over collectedResources correctly? Secondary question, is the return correct?
Use mapM_