[Issue 4535] std.range could have a takeWhile!pred(range) function
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed Jul 12 00:45:29 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=4535
--- Comment #9 from timon.gehr at gmx.ch ---
(In reply to Jonathan M Davis from comment #8)
> (In reply to timon.gehr from comment #7)
> > (In reply to Jonathan M Davis from comment #6)
> > > We already have until,
> > > which does what takeWhile would do - it just has an arguably worse name. Is
> > > there something about until that does not fulfill what takeWhile would do?
> >
> > In many (most?) circumstances it is just silly to have to specify a
> > condition to detect the first element that you do /not/ want included in
> > your range. There is a reason 'filter' keeps the elements for which the
> > predicate evaluates to 'true' and not those for which it evaluates to
> > 'false'.
>
> True, in may circumstances, having to negate your predicate is annoying, but
> when I tried to get takeWhile and dropWhile added on that basis several
> years ago, Andrei vetoed it, because it was trivial to just negate the
> predicate, and he's right. It may be a bit annoying, but it is trivial.
> ...
I'm not using Phobos in order to get annoyed by trivialities, and neither are
the people who will need to read my code.
It is not inadvisable to not condone double-negation in text for which we want
to avoid that it does not fail to be hard to digest.
> There's still some value in takeWhile on the basis of user friendliness if
> you have a predicate that would need to be negated to be used with until,
> and some folks do go looking for takeWhile and fail to find until (though
> until's docs do now mention that it's essentially takeWhile), but we do
> generally try to avoid adding extremely simple functions to Phobos, and if
> takeWhile or dropWhile were added, they would almost certainly be added as
> simple wrappers around until and find respectively.
> ...
User friendliness, reader friendliness, name standardization.
> So, unless someone can convince Andrei that having to negate the predicate
> is onerous enough to merit adding the opposite functions and/or the negated
> versions are more common than what we have,
It is controversial that takeWhile is more commonly useful that until?
> I think that it's pretty clear
> that neither takeWhile nor dropWhile are going to be added, because we
> already have the functionality that they provide, even if it does require
> that you sometimes negate your predicate.
It is wrong to think in terms of "functionality" for combiners used in a
functional program.
Every additional negation makes a one-liner harder to understand even if it
inconveniences its construction in a minor (but still, unnecesssary) way.
--
More information about the Digitalmars-d-bugs
mailing list