On 10/26/2015 08:31 PM, Ulrich Küttler wrote:
On Wednesday, 21 October 2015 at 18:49:26 UTC, Andrei Alexandrescu wrote:
On 10/21/2015 12:25 PM, Jonathan M Davis wrote:
My experience with immutable containers is that their performance is
trash precisely because you can't mutate them.
That's actually the experience in the Scala community. Over and again
people start with immutable containers all over the place because
they're cool, and end up with mutable containers because they work. --
Andrei
Ranges and loops. Same story. Ranges are cool, loops get stuff done.
This kind of reasoning sounds cool but is ultimately misguided.
(I don't think the stories are even analogous.)
Persistent containers have a /different interface/ than mutable
containers and hence can be used in different algorithms, where they can
help getting low asymptotic resource usage. Obviously there is not much
point in using persistent containers just because one considers them
"cool" if what one really wants is a mutable container.
Ranges can be iterated, loops iterate them. If one wants to get stuff
done, one uses library primitives when they apply and implements the
remaining functionality oneself. When one notices that certain patterns
begin to repeat, one will sometimes take a short time to factor them out
in order to make progress faster. If they are patterns of iteration,
this means writing an opApply or sometimes a range.