dropping parentheses on template instantiation

downs default_357-line at yahoo.de
Mon Oct 6 08:28:31 PDT 2008


KennyTM~ wrote:
> 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)) ?

auto v = new Vector of Stack of (Positive of real, Matrix of (real, 3, 3));

Probably suboptimal. I mostly just threw that out there as a "wouldn't it be cool" to remind people that there are alternatives besides foo[SYMBOL](bar, baz)



More information about the Digitalmars-d mailing list