iteratee Where is >>== and other combinators?

John Lato jwlato at
Mon Aug 16 10:58:05 EDT 2010

Dear Edward,

I don't think this combinator is necessary or particularly useful with the
CPS implementation of iteratees.  AFAIU it's mostly used for sequencing
monadic effects and in the implementation of ($$).  That's not an issue with
the CPS implementation.  I always considered the changing element type an
artifact of (>>==)'s implementation rather than a useful feature, and I'm
not aware of any instance where it was used for that purpose, so I left it

Since the IterV datatype is gone and it's no longer possible to
pattern-match on its constructors, the second argument to (>>==), that is
(IterV el m a -> m (IterV el m a)), is somewhat more awkward to construct.
 As a result I think that either 'convStream' or 'unfoldConvStream' are
easier to use for this purpose.

Are there any examples where it would be beneficial?  I'm certainly willing
to add it if there's demand.


On Sun, Aug 15, 2010 at 1:11 AM, Edward Z. Yang <ezyang at> wrote:

> In his DEFUN08 talk notes [1],  Oleg introduces a number of combinators
> for handling iteratees.  The one I noticed, in particular, that was missing
> was the >>== combinator, which is analogous to monadic bind but in the
> vertical direction.  I am curious to know if this was purposely omitted
> or just an oversight.
> Cheers,
> Edward
> [1]
> _______________________________________________
> Iteratee mailing list
> Iteratee at
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Iteratee mailing list