Hi Sergey,<br><br>I&#39;ve got an explanation; quite surprisingly it&#39;s a bug in enumPure1Chunk.  Even though it is an odd case, I&#39;m surprised that it hasn&#39;t come up before now since enumPure1Chunk appears frequently.<br>
<br>I&#39;ve just uploaded 0.8.5.0 which has the fix.  There&#39;s now an additional Monoid constraint on enumPure1Chunk, unfortunately.<br><br>Thanks very much for reporting this.<br><br>John L<br><br><div class="gmail_quote">
On Thu, Jun 2, 2011 at 10:02 AM, Sergey Mironov <span dir="ltr">&lt;<a href="mailto:ierton@gmail.com">ierton@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Ok. I&#39;ve checked iteratee-0.8.3.0 and 0.8.4.0. Results are same.<br>
<br>
Sergey<br>
<br>
2011/6/2 John Lato &lt;<a href="mailto:jwlato@gmail.com">jwlato@gmail.com</a>&gt;:<br>
<div><div></div><div class="h5">&gt; Hi Sergey,<br>
&gt; I can&#39;t explain this; maybe it&#39;s a bug in enumWith?  I&#39;ll look into it.<br>
&gt; Thanks,<br>
&gt; John<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; Message: 20<br>
&gt;&gt;<br>
&gt;&gt; Date: Thu, 2 Jun 2011 02:46:32 +0400<br>
&gt;&gt; From: Sergey Mironov &lt;<a href="mailto:ierton@gmail.com">ierton@gmail.com</a>&gt;<br>
&gt;&gt; Subject: [Haskell-cafe] [iteratee] how to do nothing .. properly<br>
&gt;&gt; To: <a href="mailto:haskell-cafe@haskell.org">haskell-cafe@haskell.org</a><br>
&gt;&gt; Message-ID: &lt;BANLkTimMFRWgH9Nopt-eua+L7jQcGq+u=<a href="mailto:g@mail.gmail.com">g@mail.gmail.com</a>&gt;<br>
&gt;&gt; Content-Type: text/plain; charset=ISO-8859-1<br>
&gt;&gt;<br>
&gt;&gt; Hi. Would anybody explain a situation with iter6 and iter7 below?<br>
&gt;&gt; Strange thing - first one consumes no intput, while second consumes it<br>
&gt;&gt; all, while all the difference is peek  which should do no processing<br>
&gt;&gt; (just copy next item in stream and return to user).<br>
&gt;&gt; What I am trying to do - is to write an iteratee consuing no input,<br>
&gt;&gt; but returning a constant I give to it. I thought (return a) should do<br>
&gt;&gt; it, but it seems I was wrong as return actually consumes all unparsed<br>
&gt;&gt; stream. iter6 experience tells me that (peek&gt;&gt;return a) is what I<br>
&gt;&gt; need, but it&#39;s completely confusing and not what I expected.<br>
&gt;&gt;<br>
&gt;&gt; Thanks,<br>
&gt;&gt; Sergey<br>
&gt;&gt;<br>
&gt;&gt;  import Data.Iteratee as I<br>
&gt;&gt;  import <a href="http://Data.Iteratee.IO" target="_blank">Data.Iteratee.IO</a><br>
&gt;&gt;  import Control.Monad<br>
&gt;&gt;  import Control.Exception<br>
&gt;&gt;  import Data.ByteString<br>
&gt;&gt;  import Data.Char<br>
&gt;&gt;  import Data.String<br>
&gt;&gt;<br>
&gt;&gt;  -- countBytes :: (..., Num b) =&gt; Iteratee s m a -&gt; Iteratee s m (a, b)<br>
&gt;&gt;  countBytes i = enumWith i I.length<br>
&gt;&gt;<br>
&gt;&gt;  iter6 = do<br>
&gt;&gt;     h &lt;- countBytes $ (peek &gt;&gt; return 0)<br>
&gt;&gt;     s &lt;- I.stream2list<br>
&gt;&gt;     return (h,s)<br>
&gt;&gt;<br>
&gt;&gt;  iter7 = do<br>
&gt;&gt;     h &lt;- countBytes $ (return 0)<br>
&gt;&gt;     s &lt;- I.stream2list<br>
&gt;&gt;     return (h,s)<br>
&gt;&gt;<br>
&gt;&gt;  print6 = enumPure1Chunk [1..10] (iter6) &gt;&gt;= run &gt;&gt;= print<br>
&gt;&gt;  print7 = enumPure1Chunk [1..10] (iter7) &gt;&gt;= run &gt;&gt;= print<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Here is example ghci session<br>
&gt;&gt;<br>
&gt;&gt; *Main&gt; print6<br>
&gt;&gt; ((0,0),[1,2,3,4,5,6,7,8,9,10])<br>
&gt;&gt; -- read 0 items, returns 0<br>
&gt;&gt; *Main&gt; print7<br>
&gt;&gt; ((0,10),[])<br>
&gt;&gt; -- read 10 items (???) returns 0<br>
&gt;&gt; *Main&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ------------------------------<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Haskell-Cafe mailing list<br>
&gt;&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt;&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; End of Haskell-Cafe Digest, Vol 94, Issue 3<br>
&gt;&gt; *******************************************<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>