Le 13/05/2011 01:19, Mike Samuel a écrit :
> 2011/5/11 David Bruant <[email protected]>:
>> Hi,
>>
>> I've recently been thinking about the case of memoizing. Let's assume that a
>> function f takes an object o as a parameter and that f is a pure function
>> (results only depends on argument).
>> ----
>> function f(o){
>> /* perform a computation, return the result */
>> }
>> ----
>>
>> A memoizer could be written to improve f time performance (by the cost of
>> memory, of course).
>> ----
>> function memoizer(f){
>>   var cache = WeakMap();
>>   return function(o){
>>     var res;
>>     if(WeakMap.has(o))
>>       return cache.get(o);
>>     res = f.apply(this, o);
>>
>>     cache.set(o, res);
>>   };
>> }
> Does this do what you were trying to accomplish with has, but without
> requiring has?
Yes, I'm sorry, I shouldn't have used the word "require".
Your example does work. It is some derivation of what can be found at
http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps&s=weakmap#explicit_soft_own_fields
I get that neither "has" nor "delete" are required, as proves the above
link and your example. Still, I'm confident that the engine would be a
better place to handle it and my point was that there are some use cases
that may do "heavy" usage of a ".has" method on weak maps which in my
opinion is an argument in favor of adding "has" in the WeakMap API.
It turns out, it seems to already be the plan as wrote Mark Miller in a
previous e-mail. The wiki just cannot be updated yet, before consensus
is reached during a TC-39 meeting.

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

Reply via email to