dropping parentheses on template instantiation

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Oct 5 15:47:37 PDT 2008


Leandro Lucarella wrote:
> Andrei Alexandrescu, el  5 de octubre a las 13:18 me escribiste:
>> I just realized something different. After making an informal review of some code, I saw that a large percentage of template instantiations only need ONE 
>> argument.
>>
>> This makes me think, with the old "!" notation, parentheses could be dropped entirely without prejudice:
>>
>> auto covariance = Matrix!real(n, n);
>> auto normalized = SparseVector!double(n);
>>
>> and so on.
>>
>> To the unbridled joy of the enemies of the Sad Pirate, the dot won't work for template instantiation because without the parentheses it DOES engender 
>> ambiguity.
>>
>> Now say we take the following route:
>>
>> 1) We find something different from shouting
>>
>> 2) We drop the parentheses for 1 argument
>>
>> That sounds like a possible winner. In this case the "#" becomes considerably more attractive, in fact very attractive exactly because it looks unlike any 
>> letter:
>>
>> auto covariance = Matrix#real(n, n);
>> auto normalized = SparseVector#double(n);
>>
>> Ideas?
> 
> I really liked downs idea, what about
> auto covariance = Matrix of real(n, n);
> auto normalized = SparseVector of double(n);
> auto foo = Bar of (double, Foo)(n);
> 
> Or maybe reuse "with"?
> auto covariance = Matrix with real(n, n);
> auto normalized = SparseVector with double(n);
> auto foo = Bar with (double, Foo)(n);
> 

What happened to "I feel is unnecessary to change the template 
instantiation syntax"? I guess you simply saw something you liked. :o)

About "of" or "with":

array = map of sqrt(array);
inPlace with writeln(array);

Guess I can rest my case now :o).


Andrei



More information about the Digitalmars-d mailing list