On 2011-08-18 00:51, Andrei Alexandrescu wrote:
On 8/17/11 2:35 PM, Jacob Carlborg wrote:
D should have a built-in range type. One that supports syntax for both
including and excluding the last element:

auto a = 3 .. 5
auto b = 3 ... 5

Then we wouldn't need a special range syntax for switch statements. You
could store ranges in variables and pass them to functions. opSlice
probably wouldn't be needed, instead opIndex could be used and you would
declare the method to take a range instead of two integers.

I doubt that would work well. Let's ignore for now mundane issues such
as the ambiguity of 3...5 and focus on something like:

I'm just hoping that floating point syntax will be removed. I know a lot of people agree with me on this.

int x;
...
switch (x) {
case 3 ... 5: return 1;
default: return 0;
}

We'd need to change the behavior of switch anyway, or we'd need to
define equality such that e.g. 4 == 3 ... 5. But then equality is not
transitive anymore because 4 == 2 ... 6 too, but 3 ... 5 is not equal to
2 ... 6.

There could be some kind of "include" function/property or similar. Just as there are built-in properties on other types in D.

Adding new built-in types is not easy. For a variety of reasons we
should move the other way (per e.g. the hashtables discussion elsethread).


Andrei

I know that the implementation of the associative arrays have been moved to the runtime, if you're referring to that. But the compiler still knows about the associative array, right? I don't care where a range type would be implemented, in the compiler or in the runtime.

--
/Jacob Carlborg

Reply via email to