Export lists in modules

Johannes Waldmann waldmann at imn.htwk-leipzig.de
Tue Feb 28 02:52:00 EST 2006

Cale Gibbard wrote:

> This is exactly why lists are so common. If people ask why lists are
> so common in lazy functional languages, they ought also to ask why
> loops are so common in imperative languages.

A loop is a sequence of actions. In FP, I don't typically have actions,
rather I collect values, so I'd need several collections types,
among them: sequences, and among them: classical left-biased lists.

I admit that my typical Haskell program does use such lists
all over the place, but mostly in monad comprehensions:
do x <- ... ; guard ; let ... ; return ...
and often it's a list only because there is no such syntactical
convenience for, e. g. Sets.
(I have to write lots of setToList/mkSet, which look plain ugly.)

Even if I really want sequences, I rarely rely on the
left-biased representation. (E. g. in the above example,
there's no visible pattern matching on the 'cons'.)

For reference, in Java, List<> is an interface, not a type
(it has instances like LinkedList<> and ArrayList<>).

And, there's nice syntactic sugar for looping
over collections:  Collection<E> c; for (E item : c) { ... }
(it hides the pre-1.5 Iterator.hasNext/next stuff.
I'd say this is an example of moving away from a left-biased
representation, or at least freeing the programmer from having
to think about it).

Respectfully submitted,
-- Johannes Waldmann -- Tel/Fax (0341) 3076 6479/80 --
---- http://www.imn.htwk-leipzig.de/~waldmann/ -------

More information about the Haskell-prime mailing list