Design of intuitive interfaces

Ary Borenszweig ary at esperanto.org.ar
Sun Feb 21 14:07:48 PST 2010


Michel Fortin wrote:
> On 2010-02-21 10:19:06 -0500, bearophile <bearophileHUGS at lycos.com> said:
> 
>> Michel Fortin:
>>>     array.sort(predicate)     // sort in place using predicate
>>>     array.sorted(predicate)   // create sorted copy using predicate
>>>     array.isSorted(predicate) // tell if the array is sorted using 
>>> predicate
>>
>> Good.
>>
>> Another possibility is to let D2 accept ? and ! too inside variable 
>> names, so they can become (as in Ruby I think, and something similar 
>> is common in Lisp-like languages too):
>> array.sort(predicate)
>> array.sort!(predicate); // void function
>> array.sorted?(predicate)
> 
> Note that Ruby only accept this as a suffix, but yeah it's part of the 
> identifier.
> 
> And I'd love this, but the ! suffix is totally ambiguous with the 
> template instantiation syntax, and the ? suffix would be ambiguous in 
> the ternary operator "?:".

But ruby has the ternary operator "?:", it just gives the "?" in the 
identifier more precedence.

So there's just the backwards compatibility problem, but if you had:

foo? something : something_else

then now it won't compile ("foo?" can't be found) and you'll have to 
change it to

foo ? something : something_else

so it's a safe backwards incompatible change.



More information about the Digitalmars-d mailing list