shouting versus dotting
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sat Oct 4 21:06:48 PDT 2008
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.
In C, "!" is used as a unary operator. That may seem odd at first, but
it nevers follows a word so it's tenuous to associate it with the
natural language "!". In D, binary "!" _always_ follows a word, a name,
something coming from natural language. So the conotation with
exclamation jumps at you.
That's why I find the choice of "!" poor. I believe it can impede to
some extent acquisition of templates by newcomers, and conversely I
believe that using .() can make templates more palatable. I tried using
".()" in my code and in only a couple of days it looked and felt way
better to me. Based on that experience, I suggest that "!()" is dropped
in favor of ".()" for template instantiation for D2.
Sean's argument that "The exclamation mark signifies an assertion of
sorts" is exactly where I'd want templates not to be: they should be
blended in, not a hiccup from normal code. Serious effort has been, and
still is, made in D to avoid shell-shocking people about use of
templates, and I think ".()" would be a good step in that direction.
Andrei
More information about the Digitalmars-d
mailing list