http://d.puremagic.com/issues/show_bug.cgi?id=5507


[email protected] changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]


--- Comment #1 from [email protected] 2012-11-15 05:31:27 PST ---
(In reply to comment #0)
> The recent addition of countUntil makes use of the startsWith template 
> function
> which has an overload for accepting many ranges. By modifying the signature 
> you
> can take advantage of this overload at no additional code:
> 
> - sizediff_t countUntil(alias pred = "a == b", R1, R2)(R1 haystack, R2 needle)
> + sizediff_t countUntil(alias pred = "a == b", R1, Ranges...)(R1 haystack,
> Ranges needle)
> 
> https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm.d#L3239

While the new signature *would* be nice to have, this actually *would* make
count until much more complex:

startsWith only cares about the beginning of the ranges, and as such, is
perfectly capable of operating on input+input ranges. By contrast, countUntil
*Needs* to have Forward+Forward

1. This makes the "if(is(typeof(startsWith(haystack, needles))))" a bad
condition

Also, since startsWith "consumes" its inputs, the ranges passed to it need to
be saved.

2. This would require a lot of code, to analyze just what in needle is a range
(that needs saving) or is an element (that doesn't).

Not saying it's a bad idea, or that it can't happen, but it requires *much*
more than a simple signature change.

For now (IMHO), we should concentrate on consolidating the current implementati

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to