shouting versus dotting
Benji Smith
dlanguage at benjismith.net
Tue Oct 7 08:49:19 PDT 2008
KennyTM~ wrote:
> Benji Smith wrote:
>> KennyTM~ wrote:
>>> Benji Smith wrote:
>>>> Jarrett Billingsley wrote:
>>>>> On Sun, Oct 5, 2008 at 8:57 PM, Chris R. Miller
>>>>> <lordsauronthegreat at gmail.com> wrote:
>>>>>> The !() syntax seems to serve only as a heads up that it's a
>>>>>> template.
>>>>>> Otherwise (as far as I can tell) a simple foo(int)(bar, baaz)
>>>>>> would work
>>>>>> just as well as foo!(int)(bar, baaz).
>>>>>>
>>>>>
>>>>> Unambiguous grammar, you fail it.
>>>>>
>>>>> foo(bar)(baz); // template instantiation or a chained call?
>>>>>
>>>>> This _can_ be _made_ to work, but it would mean that the parse tree
>>>>> would be dependent upon semantic analysis, and that just makes things
>>>>> slow and awful. I.e. C++.
>>>>
>>>> I'd be happy to get rid of OpCall, which I've always found confusing
>>>> and pointless.
>>>>
>>>> --benji
>>>
>>> That's going to break a lot of struct constructors using static opCalls.
>>
>> Only because structs should have had constructors from the start.
>> Using opCall was always a hack around the lack of constructors on
>> structs.
>>
>> opCall is a source of numerous language ambiguities that make other
>> features more difficult to implement. For example, template
>> instantiation could be done with bare parentheses ("Template(args)"
>> instead of "Template!(args)" or "Template{args}") if opCall was
>> eliminated.
>>
>> --benji
>
> But what about a method that returns a delegate?
Damn. You win.
Hmmmmmm... I still hate opCall, though :)
--benji
More information about the Digitalmars-d
mailing list