Why is std.algorithm so complicated to use?
Jonathan M Davis
jmdavisProg at gmx.com
Tue Jul 10 08:17:53 PDT 2012
On Tuesday, July 10, 2012 10:21:23 Andrei Alexandrescu wrote:
> On 7/10/12 5:35 AM, Jacob Carlborg wrote:
> > On 2012-07-10 08:59, Dmitry Olshansky wrote:
> >> Can you do it in other languages?
> >
> > Sure, in Ruby, but that only works on arrays:
> >
> > p [5, 3, 5, 6, 8].uniq.map{ |e| e.to_s }.sort
>
> This is very inefficient.
>
> I agree that if efficiency wasn't a concern for std.algorithm, its API
> would have been different. As things are, I think std.algorithm strikes
> a very good balance between efficiency and usability.
The other thing that affects a lot is infinite ranges. The functions with lazy
results work wonderfully with infinite ranges but would generally result in
infinite loops if used with functions with eager results.
auto vals = map!"a % 10"(rndGen());
works great, but you'd be forced to use take directly on rndGen pretty much
all the time you wanted to do something like that if functions like map were
lazy.
But I suspect that the sort of people who will be complaining about map not
returning an array are also the sort of people who won't be all that familar
with operating on infinite lists and at least initially probably won't care.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list