Namespaces on definitions

Jeff Dyer jodyer at
Wed Apr 16 11:58:16 PDT 2008

Here are some other interesting cases involving destructuring patterns.

Qualified syntax:

   var {x = ns::x, y = ns::y, z = ns::z}: {x:A, y:B, z:C } = ...
   var [ns::x, ns::y, ns::z}: [A, B, C ] = ...

Attribute syntax:

   ns var {x, y, z}: {x:A, y:B, z:C} = ...
   ns var [x, y, z]: [A, B, C] = ...

To my eye the latter are cleaner and clearer. There is another sense in
which I think the attribute syntax is better. The identifier is the short
name of the binding and having it cleanly delineated from the namespace part
of the name makes the meaning of the binding clearer.

I agree that having two ways of naming properties is unfortunate, but it¹s
probably unavoidable. I tried the opposite approach of using Œvar¹ and
Œconst¹ forms in object initializers to get rid of some uses of qualified
names there. But in the end, that is just noisier. I¹ve resigned myself to
the view that ³N::X² is the way to name dynamic properties, and ³N var X²
(and the like) is the way to name fixed properties.


On 4/16/08 6:38 AM, Brendan Eich wrote:

> On Apr 16, 2008, at 2:50 AM, Yuh-Ruey Chen wrote:
>> I agree. I don't see why there should be multiple syntaxes that are as 
>> concise as each other and both have about equal precedent (AS3 vs. E4X). 
>> If in some futuer spec, properties can inhabit multiple namespaces, then 
>> we can consider the |ns1 ns2 ... var foo| syntax again.
> The syntaxes are not equally concise, not only because :: is heavier visually
> and in terms of keyboard input (two shifted chars) than spaces. Consider
>   ns var foo, bar;
> vs.
>   var ns::foo, ns::bar;
> It's true you can't distribute one type across several variables:
>   var foo:T, bar:T;
> but that's not a reason to restrict namespace syntax per se.
> Cases of ns including public, protected, private, and internal may be the most
> useful ones for this distributive syntax, but are those namespaces? Either
> way, the ns var foo syntax is more concise.
> /be
> _______________________________________________
> Es4-discuss mailing list
> Es4-discuss at

-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Es4-discuss mailing list