Finding a "safety syntax" for classes

Herby Vojčík herby at mailbox.sk
Fri Mar 23 07:57:20 PDT 2012


Russell Leggett wrote:
>
>
> On Fri, Mar 23, 2012 at 7:00 AM, Herby Vojčík <herby at mailbox.sk
> <mailto:herby at mailbox.sk>> wrote:
>     I will repeat myself, I proposed this thing but no one reacted. It's
>     short, does not clash as new mentioned before, and does not preclude
>     constuctor magic in any way:
>
>     class Class extends SuperClass {
>       @(params) { body } // constructor
>       @x(params) { body } // private-named method
>       y(params) { body } // plain method
>     }
>
>     Of course, this syntax is based on '@xxx' private name access
>     pattern is also in the language - constructor is intentionally
>     reusing this syntax, but with 'empty identifier' - as a special
>     short construct to use for constructor. Reusing private name syntax
>     is safe as to name clash, because it does not clash with property
>     names (and using empty identifier, neither does clash with real
>     private names).
>
> I'm not sure if you're suggesting we add private name support for this
> proposal, but that would be feature creep. If you are suggesting only

No. I am just aware of possibility that foo. at bar may end up as syntax 
for foo[bar] if bar is private name, freeing [] for overloading with 
"collection element access" as in object reformation proposal.

In this proposal, I am silently assuming it is so (the @x is from there).

> @() for constructor, then I think that would still be pretty confusing
> and grawlixy. I suppose you could make the argument that the underlying
> constructor itself is some private property, and therefore makes sense

Exactly. With *some* made emphasized.

> to use @, but that seems like exposing internals on something that
> should be straightforward. If that was not your intention, then I think

Or, more "special" then "private".

> it's even more confusing because you're associating the constructor with
> something private.

As I noted above, constructor is something 'special' or 'magical' 
anyway. It _is_ true that if string name should be use, constructor is 
most appropriate because, well, it is there already.

If other name should be used, it creates confusion that it is treated 
specially, so the mathod of that name is not present, and on the 
contrary, it is present there under the name 'constructor' (!!!).

So if people want something new, possibly not a reserved name because of 
previous paragraph, the idea is to reuse private syntax but with 'null 
identifier'.

It is special (which constructor is), and short. Yes, grawlixy, but not 
conpletely nonsensical, because @xxx is (in this parallel universe where 
foo. at bar is accepted) used for naming other special things (private 
properties) anyway.

> - Russ
>     Herby


More information about the es-discuss mailing list