Using Sequence Range as a SortedRange.
D Lark
dlark at example.com
Wed Jul 13 22:45:50 UTC 2022
On Wednesday, 13 July 2022 at 22:35:35 UTC, D Lark wrote:
> On Wednesday, 13 July 2022 at 18:27:22 UTC, D Lark wrote:
>> I am trying to use a sequence range as a sorted range so that
>> I can apply a search on it. For instance this might be used to
>> implement integer square root as so:
>>
>> [...]
>
> For the first snippet, I did not get to that point, but it
> appears I would have to add a search policy to lower bound
> since the list is infinite and the default policy, binary
> search, requires both initial bounds. i.e:
>> auto lowerBounds =
>> seqAsSorted.lowerBound!(SearchPolicy.gallop)(n);
Actually looking at the implementation of `lowerBound` it seems
that search generally is not supported for infinite ranges as
irrespective of the overload chosen via the search policy, we
still explicitly depend on `length` which is obviously not
defined for infinite ranges.
I guess that leads to the question (probably already covered
indirectly in my initial questions):
Is `SortedRange` intended to be used with infinite ranges?
It would seem that the search policies `trot` and `gallop` are
theoretically compatible with infinite ranges, but they have been
specifically implemented to depend on length.
I note that only the binary search policy overload of
`getTransitionIndex` explicitly requires the existence of a
member `length` which is consistent with my conceptual
expectation, but all the overloads actually depend on it in the
implementation.
More information about the Digitalmars-d-learn
mailing list