On Oct 6, 2012, at 2:57 PM, Kevin Smith wrote:

> 
> The issue, is providing access to an already created symbol across such 
> boundaries.  As I have pointed out in other messages, this isn't a problem 
> that it unique to symbols.  It is isomorphic with use cases for sharing any 
> kind of object across such boundaries.
> 
> I disagree.  The only reason this issue looks like a nail is because you're 
> gripping that symbol hammer so hard.  ; )  The problem is a quack.
> 
> This is duck-typing, plain and simple.  The only issue is what kind of a 
> quack we are looking for.  Do we identify the quack by using a flat 
> identifier namespace (as we typically do), or do we go for something stronger?
> 
> There's nothing wrong with using "iterator" as the quack.  But the option 
> exists for something stronger, if we are willing to create the syntax to 
> support it.
> 
> Let's call it strong-duck-typing.  Instead of a quack being an identifier in 
> the flat namespace of identifier names, the quack is a globally unique 
> string.  There are only two sane options for globally unique names:  uuids 
> (or random equivalents) and DNS-based paths.  Let's arbitrarily choose uuids.

I don't think "strong" is the right adjective for what you are trying to say.  
I think "immune to unintended conflicting usage of a property name" is the idea 
you are getting at.   It a property is named using commonly used word, it has a 
higher probability that somebody will choose that same word to name a property 
that has a different intended semantics than the original usage.  They appear 
to be polymorphicly equivalent properties but they really aren't.  They won't 
"act like the same duck".

Being globally unique is not sufficient.  ECMAScript names are globally unique, 
but many string values are subject to unintended semantic conflict 
(reassignment of meaning) exactly because they are globally available to 
everybody and likely to be chosen the a good property name. DNS-based paths use 
of UUIDs DNS-bassed paths reduces (significantly) the probably of an unintended 
conflicting reuse of a name.  But it does not guarantee that it won't occur. 

The alternative is to use a unique value that can't be unintentionally 
recreated.  That is what a symbol is.   It is an unforgeable, unguessable 
property name. If you want to define a property that will be recognized to have 
some specific meaning you must obtain the symbol to use as the property key 
from some dispensing authority. 

Allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to