bearophile wrote:
Andrei Alexandrescu:
The approach I took with the new phobos is:
int[] haystack; int[] needle; ... auto pos1 = find(haystack,
needle); // linear sort(haystack); auto pos2 =
find(assumeSorted(haystack), needle);
In my dlibs I do in a simpler and shorter way:
auto pos1 = haystack.index(needle); haystack.sort(); auto pos2 =
haystack.bisect(needle);
Here there's no need to give the same name to two very different
functions.
They do the exact same thing. Unifying them under the same name is good
abstraction.
If you really like to use a single function mame, with named
arguments you may also do (bisect is false by default):
auto pos1 = haystack.index(needle); haystack.sort();
> auto pos2 = haystack.index(needle, bisect=true);
I prefer encoding structural information in types.
Andrei