On Saturday, 16 July 2022 at 08:40:10 UTC, D Lark wrote:
On Wednesday, 13 July 2022 at 01:40:43 UTC, Paul Backus wrote:
On Wednesday, 13 July 2022 at 01:23:35 UTC, D Lark wrote:
First, please can someone clarify if the behaviour I expect
in the last line is consistent with the intention of the
library?
Yes, it should behave the way you expect. The current behavior
is a bug.
I've submitted a report for it here:
https://issues.dlang.org/show_bug.cgi?id=23242
It looks like the resolution is that this can't be fixed? I'm
not sure I understand the conclusion. What does this mean for
this part of the library then? Should the
RandomAccessInfinite!E interface be removed since it's not
fully supported?
What if infinite-ness is a class/struct level property distinct
from empty-ness like `const enum bool infinite`? It appears to
me that this is what we try to achieve by the unfortunate
coupling of declaring `empty` as a manifest constant to denote an
infinite range. If we have a distinct convention for declaring
infiniteness then for the infinite range case we can insert `bool
empty(){return false;}` (or `const enum bool = false)`
automatically or check agreement. We can even have a mixin like
the `ImplementLength` one that can add both `infinite` and
`empty` in one go, which might be useful for implementing
infinite ranges.