Suggestion: New table iterators

Jakob Cederlund på UAB <>
Thu Oct 19 11:01:04 CEST 2000


At 10:39 2000-10-19 +0200, Bjorn Gustavsson wrote:
>I suggest that we add
>
>         ets:foldl(Fun, Acc, Table)
>         ets:foldr(Fun, Acc, Table)
...

Hmm... it's easily done, but is it the right way?

What you want is a way to iterate over containers, that is not tied to the 
implementation of the container.

The way of iterating in erlang, recursing with [Car | Cdr] is tied to the 
list type. Lazy evaluation, with language support, could be one way of 
replacing the | Cdr with a fun-call, without having to rewrite a lot of code.

Using foldl or foldr instead of [Car | Cdr] is another way of doing it, 
perhaps yielding less readable code. But it's still not easy to change 
underlying representation.

And it doesn't solve the initial problem, that there is no easy way for 
isolating the algorithms on containers from the implementation of the 
container. (Call it OOP or generic programming or whatever.)

/Jakob




More information about the erlang-questions mailing list