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 <ier...@gmail.com> > Subject: [Haskell-cafe] [iteratee] how to do nothing .. properly > To: haskell-cafe@haskell.org > Message-ID: <BANLkTimMFRWgH9Nopt-eua+L7jQcGq+u=g...@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@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > > > End of Haskell-Cafe Digest, Vol 94, Issue 3 > ******************************************* >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe