Why is std.algorithm so complicated to use?

Jacob Carlborg doob at me.com
Tue Jul 10 09:38:06 PDT 2012

On 2012-07-10 17:30, Andrei Alexandrescu wrote:

> It would be possible to chain a single element to the end of a range.
> One related thing to do is to define singletonRange(x) that returns a
> range with exactly one element, namely x.

Ok, I saw that suggestion in another post.

> Ranges and std.algorithm obey simple, mathematical realities deriving
> from algorithm and storage topology constraints. For example sort works
> in place so it generally can't work on mapped stuff because there's no
> place to put the sorted contents. Also sort needs a random-access range
> to work with so it can't work e.g. with the result of filter, which
> necessarily yields a non-random-access range. And so on.

Can't "map" and "filter" return a random-access range if that's what 
they receive?

> Now I understand if you come from a place where there's no concern over
> hidden allocations and extra work for the benefit of convenience, you
> may find std.algorithm less easy to work with. But drawing the
> conclusion that std.algorithm is badly designed or gratuitously
> difficult to use would be a mistake. I opine I can recognize a good vs.
> bad design even when it's mine, and in my opinion std.algorithm is a
> good design and that most of your opposing impressions derive from a
> misunderstanding of its charter.

I don't think I've struggled as much with any other API I've used. In 
many cases I had to resort to foreach-loops because that was more 
convenient than using std.algorithm.

/Jacob Carlborg

More information about the Digitalmars-d mailing list