google hosed my indentation

> obtainCookies :: IO Curl -> String -> IO ()
> obtainCookies curl responseBody = do
>               curl' <- curl
>               mapM_ (flip (curlResp curl') resourceOpts) $
>                     screenScraping responseBody



On Wed, Jan 26, 2011 at 3:32 PM, Michael Litchard <michael@schmong.org> wrote:
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_