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.

Reply via email to