[Haskell-cafe] ANNOUNCE: iterIO-0.1 - iteratee-based IO with pipe operators

dm-list-haskell-cafe at scs.stanford.edu dm-list-haskell-cafe at scs.stanford.edu
Fri May 6 18:47:00 CEST 2011

At Sat, 7 May 2011 01:15:25 +1000,
Alex Mason wrote:
> Hi All,
> I really love the look of this package, but if this is going be
> *the* iteratee package, I would absolutely love to see it fix some
> of the biggest mistakes in the other iteratee packages, soecifically
> naming. A change in naming for the terms iteratee, enumerator and
> enumeratee would go a hell of a long way here; Peaker on #haskell
> suggested Consumer/Producer/Transformer, and there is a lot of
> agreement in the channel that these are vastly better names. They’re
> also far less intimidating to users.
> I personally feel that maybe Transformer isn't such a great name
> (being closely associated with monad transformers), and that maybe
> something like Mapper would be better, but I'm by no means in love
> with that name either. More people in #haskell seem to like
> Transformer, and I don't think my argument against it is very
> strong, so the hivemind seems to have settled on the
> Producer/Transformer/Consumer trilogy.
> I'd love to hear thoughts on the issue, especially from David.

This is a question I struggled a lot with.  I definitely agree that
the terms are pretty intimidating to new users.

At least one thing I've concluded is that it really should be
presented as two concepts, rather than three.  So we should talk
about, e.g., producers, consumers, and pipeline stages that do both.

I'd been thinking about using the terms Source and Sink, but Source is
very overloaded, and "SinkSource" doesn't exactly roll off the tongue
or evoke a particularly helpful intuition.

In the end, I decided just to come up with new terms that wouldn't
carry any pre-conceptions (e.g., what's an "Inum"?), and then build
the intuition through copious documentation...

I'm open to suggestion here.  I've already overhauled the naming
conventions in the library once.  Initially I used the names EnumI and
EnumO for Inum and Onum.  I think the old names were much worse,
especially since Enum is a fundamental typeclass that has absolutely
nothing to do with enumerators.


More information about the Haskell-Cafe mailing list