Ok. I've checked iteratee-0.8.3.0 and 0.8.4.0. Results are same. Sergey
2011/6/2 John Lato <jwl...@gmail.com>: > 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