Allen Wirfs-Brock wrote:
On Nov 26, 2012, at 1:11 PM, Brendan Eich wrote:
Herby Vojčík wrote:
Hi,
shouldn't StopIteration, ForwardToTarget from "Notification proxies" thread and
similar ones be rather well-known unique symbols (like @iterator), now that we have them,
instead of well-known globals? \
Why?
Let's separate the naming and unique identity concerns. Objects have unique
identity, so do symbols. But if a unique identity is required without being a
property key, then an object is the right answer, not a symbol. I think this
applies to StopIteration.
Then there's the naming question. Should one have to use an @-name to reference
a singleton object? Again I say no. APIs have public names, mostly or always.
An identifier is a fine public name, better than a non-private symbol if bound
in a namespace object or module -- or even if a global like JSON.
Orthogonal issues. A symbol object object can be the value bound to a regular
identifier. The @ is primarily for literal property naming syntactic
contexts. EG, after a dot.
I know it's orthogonal -- please!
It was not clear which of the two (or both) Herby was raising.
On the more general line, I got pretty fond of (unique) symbols, they seem like
very good things for these sentinel-like objects. Is it ok / preferable to use
them for that? No need to use empty objects bearing only their identity any
more, imo.
For unique identity, why do you care between symbol and object?
A nice thing about Symbols as I've now spec'ed them in the latest draft. It
that they are truly immutable, stateless, and Realm independent. They don't
carry any other object references at all. Not even to their toString method.
(fun things that can be done via the MOP...)
The realm independence is interesting. That could be compelling indeed
for StopIteration, except we already proposed isStopIteration.
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss