equivariant functions

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Oct 15 12:39:19 PDT 2008


Bill Baxter wrote:
> On Thu, Oct 16, 2008 at 4:10 AM, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>> Bill Baxter wrote:
>>> Hmmm, looking at this:
>>>
>>> class Owner
>>> {
>>>  const?(A) a() const?{...}
>>>  const?(B) b() const?{...}
>>>  const?(C) c() const?{...}
>>>  const?(D) d() const?{...}
>>>  const?(E) e() const?{...}
>>>  const?(F) f() const?{...}
>>>  const?(G) g() const?{...}
>>>  const?(H) h() const?{...}
>>>  const?(I) i() const?{...}
>>>  const?(J) j() const?{...}
>>> }
>>>
>>> makes me think if we go with that syntax, Andrei is sooner or later
>>> going to complain about his D code asking him too many questions.  :-)
>>> Eh, I guess he can edit the emacs mode to display const? as
>>> smiley-faces or something.  :-) :-)
>> At this point Walter will intervene with:
>>
>> class Owner
>> {
>>   const?
>>   {
>>      A  a()  {...}
>>      B  b()  {...}
>>      C  c()  {...}
>>      D  d()  {...}
>>      E  e()  {...}
>>      F  f()  {...}
>>      G  g()  {...}
>>      H  h()  {...}
>>      I  i()  {...}
>>      J  j()  {...}
>>   }
>> }
>>
>> which isn't half bad.
> 
> I was thinking about that too.  But I'm not a big fan of blocks that
> change the meaning of declarations in a non-local way.  It looks quite
> readable in toy examples, but after you insert all the bodies and
> documentation comments for everything in the block, it becomes very
> easy to lose sight of the tag way back at the beginning of the block.

I disagree. A block is a block is a block. Indentation shows it's not 
non-local. I understand how you could formulate an argument against 
labels. They do change meaning in a non-obvious way. Block indentation 
makes all the difference. I'm in fact surprised to hear that from a 
pythonboi :o).

Andrei



More information about the Digitalmars-d mailing list