shouting versus dotting

KennyTM~ kennytm at gmail.com
Sun Oct 5 06:53:28 PDT 2008


Christopher Wright wrote:
> Andrei Alexandrescu wrote:
>> Christopher Wright wrote:
>>> Andrei Alexandrescu wrote:
>>>> The problem I see with "!" as a template instantiation is not 
>>>> technical. I write a fair amount of templated code and over years 
>>>> the "!" did not grow on me at all. I was time and again consoled by 
>>>> Walter than one day that will happen, but it never did. I also 
>>>> realized that Walter didn't see a problem with it because he writes 
>>>> only little template code.
>>>>
>>>> I didn't have much beef with other oddities unique to D. For 
>>>> example, I found no problem accommodating binary "~" and I was 
>>>> wondering what makes "!" different. I was just looking at a page 
>>>> full of templates and it looked like crap.
>>>>
>>>> One morning I woke up with the sudden realization of what the 
>>>> problem was: the shouting.
>>>
>>> Not only that, but typing it is annoying. First you need to put the 
>>> right pinky on the shift key, which is a long reach; then you need to 
>>> put the left pinky on the 1 key, which is a long reach. Then you need 
>>> to move your left pinky all the way back to the left shift key, which 
>>> is a short reach, and move your right ring finger up to the 9 key.
>>>
>>> It's a lot of reaching and back and forth.
>>>
>>> But I don't favor '.' since it's already used.
>>
>> I don't favor "." any more than the next guy, but I am glad there is 
>> awareness of how unfit a choice "!" is. If you have any ideas, please 
>> post them! Ah! I! Exclaimed! Again!
>>
>> Andrei!
> 
> I agree with Mr. Martin II: colon might be an unambiguous option, and 
> for qwerty keyboards, you don't have to switch shift keys. (I use 
> dvorak, so it'd be slightly more awkward, but still a fair bit more 
> easier than a bang.)
> 
> Also, colon's taller than dot, so it's easier to see.

How to distinguish a label from a template then? Should I print X or Y 
in the following code?

import std.stdio;

class X {
	static void print () {
		writeln("Y");
	}
}

template T (x) {
	void print () {
		writeln("X");
	}
}

void main () {
	T:(X).print();
}



More information about the Digitalmars-d mailing list