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