[Haskell-cafe] [iteratee] how to do nothing .. properly

John Lato jwlato at gmail.com
Thu Jun 2 10:05:26 CEST 2011


Hi Sergey,

I can't explain this; maybe it's a bug in enumWith?  I'll look into it.

Thanks,
John


> Message: 20

Date: Thu, 2 Jun 2011 02:46:32 +0400
> From: Sergey Mironov <ierton at gmail.com>
> Subject: [Haskell-cafe] [iteratee] how to do nothing .. properly
> To: haskell-cafe at haskell.org
> Message-ID: <BANLkTimMFRWgH9Nopt-eua+L7jQcGq+u=g at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Hi. Would anybody explain a situation with iter6 and iter7 below?
> Strange thing - first one consumes no intput, while second consumes it
> all, while all the difference is peek  which should do no processing
> (just copy next item in stream and return to user).
> What I am trying to do - is to write an iteratee consuing no input,
> but returning a constant I give to it. I thought (return a) should do
> it, but it seems I was wrong as return actually consumes all unparsed
> stream. iter6 experience tells me that (peek>>return a) is what I
> need, but it's completely confusing and not what I expected.
>
> Thanks,
> Sergey
>
>  import Data.Iteratee as I
>  import Data.Iteratee.IO
>  import Control.Monad
>  import Control.Exception
>  import Data.ByteString
>  import Data.Char
>  import Data.String
>
>  -- countBytes :: (..., Num b) => Iteratee s m a -> Iteratee s m (a, b)
>  countBytes i = enumWith i I.length
>
>  iter6 = do
>     h <- countBytes $ (peek >> return 0)
>     s <- I.stream2list
>     return (h,s)
>
>  iter7 = do
>     h <- countBytes $ (return 0)
>     s <- I.stream2list
>     return (h,s)
>
>  print6 = enumPure1Chunk [1..10] (iter6) >>= run >>= print
>  print7 = enumPure1Chunk [1..10] (iter7) >>= run >>= print
>
>
> Here is example ghci session
>
> *Main> print6
> ((0,0),[1,2,3,4,5,6,7,8,9,10])
> -- read 0 items, returns 0
> *Main> print7
> ((0,10),[])
> -- read 10 items (???) returns 0
> *Main>
>
>
>
> ------------------------------
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
> End of Haskell-Cafe Digest, Vol 94, Issue 3
> *******************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110602/fe90f912/attachment.htm>


More information about the Haskell-Cafe mailing list