shouting versus dotting

Ary Borenszweig ary at esperanto.org.ar
Sun Oct 5 11:20:18 PDT 2008


Andrei Alexandrescu escribió:
> Tom S wrote:
>> Andrei Alexandrescu wrote:
>>>> ... It looks like it should yield a tuple containing bar and baz :P
>>>>
>>>>
>>>> foo!(bar, baz)   <-  distinct, no issue.
>>>
>>> Looks great until you have twenty or thirty of these on a code 
>>> screen. Then you're like, boy this is one ugly language. Believe me, 
>>> I *tried* to put up with it.
>>
>> Hm, I didn't think so when working on ctrace or Bind...
>> I could similarly say that parentheses look bad and we should change 
>> them to something else because a screenful of them looks ugly when 
>> calling lots of functions.
> 
> You couldn't because f(a, b) is already used in math for function
> invocation. "Word!" is already used. For shouting that is.
> 
>>>> I would not like to have compile-time and run-time merged visually 
>>>> in code.
>> This statement was likely misleading, sorry for that. I don't see it 
>> as a bad thing that some functions will be running at compile-time 
>> 'behind my back'. I just wouldn't like the visual distinction between 
>> normal function calls and template evaluations to go away as long as 
>> they are fundamentally different.
> 
> They are and they stay different. One oughtn't be shouting at you though.
> 
>>> You already do in template argument deduction.
>>
>> Point. But for a different purpose - eliminating a lot of redundant 
>> code and making some meta programming feasible. It's a bit different 
>> from pretending template evaluation is like function calls.
> 
> Well parens are already used for more than function calls and nobody
> seems to mind.
> 
>>> The times go against the style of coding that separates compile-time 
>>> stuff from run-time stuff.
>>
>> The times? I'd say that these times have already been ;) You may not 
>> have this distinction e.g. in Lisp. But if you consider that D only 
>> has one 'compile time', while you could freely operate on anything at 
>> any time in Lisp, it makes more sense to have the compile-time phase 
>> stand out a bit. Especially because template code is still very 
>> different than normal D code (it's functional and memoized, after 
>> all). I'd be tempted to change my mind here if D had more 
>> meta-facilities, but at the current state of things, I'd say that the 
>> 'times' are pretty stagnant for D.
> 
> More meta-facilities are coming D's way, not less. As far as Lisp is
> concerned, at least in Scheme (I forgot how you do it in Lisp) macro
> invocation isn't distinguished in any way. For example "and" in (and a b
> c) is a macro.
> 
>>>> Let's also keep in mind what Ary said, that using "." will cause 
>>>> problems for IDEs.
>>>
>>> No it won't.
>>
>> Would you elaborate on this? I'd rather believe Ary if nothing else is 
>> provided to your point. Ary is the creator of the most advanced IDE 
>> for D as far as I know.
> 
> A template name without arguments has no members, except inside the very
> template definition, when you'd rarely use it.

I don't think it's because of that, but the IDE could check that if 
what's before the "." is a template, suggest instantiation. So after 
thinking about it again, I agree with you that it won't be problematic.

Anyway, I don't like the .() syntax. :-P



More information about the Digitalmars-d mailing list