Le 26/03/2013 20:25, Jason Orendorff a écrit :
On Mon, Mar 25, 2013 at 9:29 PM, Erik Arvidsson
<[email protected]> wrote:
WeakMap would not work in this specific case since a WeakMap cannot be
iteratered.
What would work here is determinism:
https://gist.github.com/jorendorff/5245857
For this, a deterministic API is just as easy to use, easier to
implement, and easier to reason about.
I'm not entirely sure I understand your code snippet. Is withListener
some equivalent of Node's once [1][2]?
If so, then I agree, but, we're back to a debate earlier this month
starting at [3] (implicitly forked).
From the previous discussions, my understanding of the problem that
weakrefs are expected to solve is automated cascading of GC, that is, a
full subgraph gets collected as a result of releasing one reference
assuming the convention that everyone with access to the weakref plays
nice by always accessing the object via .get, and I guess via releasing
the weakref (which is itself an object?) when useless.
I'm still not entirely convinced whether the problem being solved is
worth the non-determinism it brings along.
I'm starting to wonder whether bringing weakrefs is equivalent to having
iterable WeakMaps... And if so, why not make WeakMaps iterable?
The References section of the strawman is just a collection
of links to reactive libraries like Tangle[1], without elaboration.
But if Tangle actually used weak observer semantics, even the most
basic Tangle use cases would break! [2]
The precedent of other languages was used as a justification of doing
the same in JS and I guess this example is a good case of why this might
not be a good argument. In JS, listeners are functions which are their
own objects and keeping one hard reference imposes a different
constraint than in other languages.
David
[1] http://nodejs.org/api/events.html#events_emitter_once_event_listener
[2]
https://github.com/joyent/node/blob/2eb847849fc133e39d64798bee01252d9f3c4b58/lib/events.js#L169-L182
(the implementation is clean enough to be a good documentation in
itself, kudos to the Node folks :-) )
[3] https://mail.mozilla.org/pipermail/es-discuss/2013-March/028921.html
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss