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.