Am 19.09.2011, 19:08 Uhr, schrieb Steven Schveighoffer <schvei...@yahoo.com>:

On Mon, 19 Sep 2011 12:00:46 -0400, Timon Gehr <timon.g...@gmx.ch> wrote:

On 09/19/2011 05:52 PM, Steven Schveighoffer wrote:


$ should denote the end point of the aggregate, but it does not have to
be equivalent to length, or even an integer/uint. It should just mean
"end".

Point taken. What is the solution for infinite ranges? Should any arithmetics on $ just be disallowed?

I think $ should not pose any type restrictions, and whatever type you return can have whatever semantics you want. The only semantic restriction is it should mean "the end of the container".

In other words, generic code that expects to be able to do:

x[0..$/2]

should only expect this to work when $ is a numeric value, or defines division by numbers.

Technically, half of infinity is still infinity, so the type of $ could be defined so that any arithmetic operations on it result in itself ;)

-Steve

The documentation of such generic code would make it obvious, that it cannot work with infinite ranges.
sort() on a list of all primes for example is obviously not working.
Btw, I don't mind [^..$]. I think it is clear for everyone who ever wrote a regex and easy for anyone else. For natrually 0 based ranges, you'd still use 0. ^ would just be obfuscating there.

Reply via email to