Jeremy Martin (2013-07-15T13:49:07.000Z)
>  (a === b) >= (new Symbol(a) === new Symbol(b))

Not sure I follow... so, I either I don't agree or I don't understand :).
 I'm having to dig deep to remember my math vocab here, but I think it may
be most correct to say that the Symbol constructor, when passed an
argument, should be injective [1].  That is,

1. let *F* = *new Symbol*
2. if <http://en.wikipedia.org/wiki/Material_conditional> *a* = *b*, then *F
*(*a**)* = *F(b)*
3. if *a* != *b*, then *F(a) *!= *F(b)*

> In any case, I'd also say that weak maps are good enough for your use
case.

In some (most?) cases, but not all.  There's already a consensus that the
garbage collection semantics of WeakMaps aren't always appropriate [2].  By
parameterizing the Symbol constructor, developers can create custom map/set
types without the overhead of a "Symbol Factory" (as previously suggested
by Allen).  I believe this would be a useful building block for interesting
and innovative custom types.

[1]: https://en.wikipedia.org/wiki/Injective_function#Definition
[2]: http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets

On Mon, Jul 15, 2013 at 5:52 AM, Andreas Rossberg <rossberg at google.com>wrote:

> On 12 July 2013 22:29, Jeremy Martin <jmar777 at gmail.com> wrote:
> > My expectation would be that...
> >
> > (a === b) === (new Symbol(a) === new Symbol(b))
>
> Nit: you probably either mean
>
>   (a === b) >= (new Symbol(a) === new Symbol(b))
>
> or
>
>   (Object.is(a, b)) === (new Symbol(a) === new Symbol(b))
>
> In any case, I'd also say that weak maps are good enough for your use case.
>
> /Andreas
>



-- 
Jeremy Martin
661.312.3853
http://devsmash.com
@jmar777
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130715/9e71f448/attachment.html>
domenic at domenicdenicola.com (2013-07-18T16:19:20.788Z)
> ```js
> (a === b) >= (new Symbol(a) === new Symbol(b))
> ```

Not sure I follow... so, I either I don't agree or I don't understand :).
 I'm having to dig deep to remember my math vocab here, but I think it may
be most correct to say that the Symbol constructor, when passed an
argument, should be [injective][1].  That is,

1. let F = new Symbol
2. [if](http://en.wikipedia.org/wiki/Material_conditional) a = b, then F(a) = F(b)
3. if a != b, then F(a) != F(b)

> In any case, I'd also say that weak maps are good enough for your use case.

In some (most?) cases, but not all.  There's already a consensus that the
garbage collection semantics of WeakMaps aren't always appropriate [2].  By
parameterizing the Symbol constructor, developers can create custom map/set
types without the overhead of a "Symbol Factory" (as previously suggested
by Allen).  I believe this would be a useful building block for interesting
and innovative custom types.

[1]: https://en.wikipedia.org/wiki/Injective_function#Definition
[2]: http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets