shouting versus dotting

Bent Rasmussen IncredibleShrinkingSphere at Gmail.com
Sun Oct 5 14:32:23 PDT 2008


I assume,

- it was the path of least resistance
- it looks close to function call syntax f!(x), which
- is closer to intent than grouping statements, as with f{x}

- Bent


"Sean Kelly" <sean at invisibleduck.org> skrev i meddelelsen 
news:gcb4p5$1id0$1 at digitalmars.com...
> Andrei Alexandrescu wrote:
>> Jason House wrote:
>>> Andrei Alexandrescu Wrote:
>>>
>>>> Jarrett Billingsley wrote:
>>>>> On Sun, Oct 5, 2008 at 12:06 AM, Andrei Alexandrescu 
>>>>> <SeeWebsiteForEmail at erdani.org> 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.
>>>>>>
>>>>>> 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.
>>>>> Long argument short:  I don't mind !() at all, and changing it to
>>>>> .() seems like a pointless pedanticism.  But since you're the one
>>>>>  suggesting it, there's a very good chance of it getting into the
>>>>>  language (if it hasn't already), so there's not much use arguing
>>>>>  against it.
>>>> It won't make it unless others try it and find it palatable too.
>>>> But please let's try it first.
>>>>
>>>> Also, I'm much less keen on introducing .() than on ousting !(),
>>>> which I believe was a very poor choice. So I suggest we all explore
>>>> other syntax choices until we find something that we can show to
>>>> the world with a straight face.
>>>>
>>>>
>>>> Andrei
>>>
>>> I have no trouble telling the world about !(). It's simple and clean.
>>> In fact, I already have told C++ folk about it when contrasting to
>>> <>.
>>
>> I see no shouting in "simple and clean". The <> syntax was 
>> extraordinarily luring and of overwhelming popularity, to the extent that 
>> the sirens' song blindsided most people about its inherent issues.
>
> Makes sense.  The <> syntax has a basis in mathematics.  Too bad it just 
> doesn't work in practice.
>
>> I'm glad people are considering {}. Maybe there is a way of ending this 
>> conversation without shouting.
>
> If this were an option, why did Walter originally choose !()?
>
>
> Sean 




More information about the Digitalmars-d mailing list