dropping parentheses on template instantiation

KennyTM~ kennytm at gmail.com
Sun Oct 5 23:18:27 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);
> 

auto v = new Vector with Stack with Tuple with (Positive with real, 
Matrix with real (3, 3)) ?



More information about the Digitalmars-d mailing list