Transient ranges

Dicebot via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 14 11:19:06 PDT 2016


On Tuesday, 14 June 2016 at 00:19:54 UTC, Andrei Alexandrescu 
wrote:
> On 06/12/2016 04:46 AM, Dicebot wrote:
>> That is matter of design philosophy. For me such basic library
>> primitives warrant C++ attitude of "don't pay for what you 
>> don't ask
>> for" - and everything else, including actual feature 
>> completeness, is of
>> negligible importance compared to that.
>
> C++'s input iterator model also predicates multiple accesses to 
> the current value by means of *it.

Yeah, I don't say C++ iterator model is any better for that kind 
of design - sorry if my wording implied that. I wonder how they 
would address it if pipeline approach would ever become popular 
in C++.

See my response to Steven - probably my main issue is wanting 
some very different concept, dedicated stream/pipeline 
abstraction that would still be usable with all the same 
std.algorithm

> It seems to me, sometimes if I went by what this forum agrees 
> upon I'd write one thousand lines of code one day and remove it 
> the next.

Please don't take my rants in the NG as a serious call to action. 
I am simply sharing my concerns in a relevant topic - if there 
was anything pragmatical I could propose, I'd take it to the mail 
list instead or even right a DIP. To be honest, I'd even prefer 
if you ignored _any_ request/proposal which is not submitted as 
such. NG can't be taken as a base for reasoning.

>> Phobos indeed doesn't seem to make such priorities right now 
>> and that is
>> one of reasons I am growing increasingly unhappy with it.
>
> What steps do you think we could take with Phobos to make it 
> better without breaking backward compatibility?

Introducing `std2` package is technically not breaking backwards 
compatibility but I presume this is not what you have meant ;) I 
don't know - as I have already said, otherwise I'd actually taken 
some more constructive actions instead of throwing complaints.

If I'd have a say in designing brand new Phobos, it would be very 
different - async by default, with a strict separation of 
lightweight @nogc algorithm and API core (fitting even for 
embedded env) and all the feature rich additional modules built 
on top. This is not kind of stuff one simply "fixes" in existing 
mature library.

At the same time, I am not even sure if it is even important to 
fix. It is good enough for any kind of general purpose 
development, good for productivity. And bigger projects with hard 
performance concerns and maintenance costs tend to grow their own 
"standard" libraries anyway.


More information about the Digitalmars-d mailing list