"with" still sucks + removing features + adding features

Robert Fraser fraserofthenight at gmail.com
Tue May 19 13:07:08 PDT 2009

Frank Benoit wrote:
> Alexander Pánek schrieb:
>> Andrei Alexandrescu wrote:
>>> bearophile wrote:
>>>> Andrei Alexandrescu:
>>>> Thank you for bringing a "real" example that gives something to work on.
>>>>> Awful!<
>>>> Well, one of your cases was wrong. Using the +1 at the end one of
>>>> those cases become:
>>>> case 'A' .. 'Z'+1, 'a' .. 'z'+1:
>>>> Instead of what you have written:
>>>> case 'A' .. 'Z'+1: case 'a' .. 'z'+1:
>>>> I agree that that syntax with +1 isn't very nice looking. But the
>>>> advantage of +1 is that it introduces (almost) no new syntax, it's
>>>> not easy to miss, its meaning is easy to understand. AND you don't
>>>> have to remember that in a case the .. is inclusive while in foreach
>>>> is exclusive on the right, keeping the standard way in D to denote
>>>> ranges.
>>> You don't understand. My point is not that people will dislike 'Z'+1.
>>> They will FORGET TO WRITE THE BLESSED +1. They'll write:
>>> case 'A' .. 'Z':
>> You know, Ruby solves this by introducing a “seperate” range syntax for
>> exclusive ranges: “...”. An inclusive range is written the same as an
>> exclusive range in D: “..”.
>> a[1 .. 2].length #=> 1 ([a[1]])
>> a[1 ... 2].length #=> 2 ([a[1], a[2]])
>> I see no reason not to include such a seperate syntax in D. “..” being
>> exclusive and “...” being inclusive, not the other way round as in Ruby
>> — see “Programmer’s Paradox” @
>> http://www.programmersparadox.com/2009/01/11/ruby-range-mnemonic/ .
>> Kind regards, Alex
> Yes, this is useful for all use cases of ranges.
> I like '...'.

Indeed it's not a bad idea... But it might be easily mistyped, lead to 
strange off-by-one errors and be very difficult to find while debugging 
them. Hmmm...

More information about the Digitalmars-d mailing list