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.