<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Segoe UI'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>Sorry, I don’t understand how. [[boundFunctions]] is not readable from the 
script itself, only from the UA.</DIV>
<DIV> </DIV>
<DIV>To retreive an element from [[boundFunctions]] you need the original 
function used to create it. If you’ve recieved an instance to that function, you 
already have a communication channel, right? Or am I missing something?</DIV>
<DIV> </DIV>
<DIV 
style="BORDER-BOTTOM-COLOR: #000000; BORDER-LEFT: #000000 4px solid; BORDER-TOP-COLOR: #000000; PADDING-LEFT: 5px; BORDER-RIGHT-COLOR: #000000; MARGIN-LEFT: 5px">
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">
<DIV style="FONT: 10pt tahoma">
<DIV style="font-color: black"><B>From:</B> <A title=erights@google.com 
href="mailto:erights@google.com">Mark S. Miller</A> </DIV>
<DIV><B>Sent:</B> Friday, January 06, 2012 5:53 PM</DIV>
<DIV><B>To:</B> <A title=fremycompany_pub@yahoo.fr 
href="mailto:fremycompany_pub@yahoo.fr">François REMY</A> </DIV>
<DIV><B>Cc:</B> <A title=brendan@mozilla.com 
href="mailto:brendan@mozilla.com">Brendan Eich</A> ; <A 
title=andrea.giammarchi@gmail.com 
href="mailto:andrea.giammarchi@gmail.com">Andrea Giammarchi</A> ; <A 
title=es-discuss@mozilla.org href="mailto:es-discuss@mozilla.org">es-discuss</A> 
</DIV>
<DIV><B>Subject:</B> Re: Improving 
Function.prototype.bind</DIV></DIV></DIV></DIV>
<DIV 
style="BORDER-BOTTOM-COLOR: #000000; BORDER-LEFT: #000000 4px solid; BORDER-TOP-COLOR: #000000; PADDING-LEFT: 5px; BORDER-RIGHT-COLOR: #000000; MARGIN-LEFT: 5px">
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">On 
Fri, Jan 6, 2012 at 1:29 AM, François REMY <SPAN dir=ltr><<A 
href="mailto:fremycompany_pub@yahoo.fr">fremycompany_pub@yahoo.fr</A>></SPAN> 
wrote:<BR>
<DIV class=gmail_quote>
<BLOCKQUOTE 
style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
class=gmail_quote>Such an implementation would be very slow and not efficient, 
  because searching for a key in the "boundFunctions" weakmap would take time. 
  It can be a polyfill solution but a new implementation need something 
  better.<BR><BR>I think the solution would be to create an "invisible" 
  [[boundFunctions]] property for all objects containing a 
  dictionnary<weak<function>, weak<boundFunction>> of 
  already-bound functions on the object. The implementation of bind would then 
  be :<BR><BR>- if objToBind is not a reference, create a new boundFunction and 
  return it.<BR>- if objToBind.[[boundFunctions]] don't exist, create it.<BR>- 
  else, check if it contains a key for functionToBind //when you are processing 
  the dictionnary, remove obsolete entries you may find<BR>  - if yes, 
  check if the weak reference is alive<BR>  - if yes, returns the 
  boundFunction<BR>- create a new boundFunction and store it into 
  objToBind.[[boundFunctions]]<BR>- return the newly created 
  boundFunction<BR><BR>Would that be possible?<BR></BLOCKQUOTE>
<DIV> </DIV>
<DIV>No, for the same reason. The mutable state you hung off this internal 
property creates an ambient communications channel.</DIV>
<DIV> </DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
class=gmail_quote><BR>François<BR><BR><BR><BR>-----Message d'origine----- 
  From: Brendan Eich<BR>Sent: Friday, January 06, 2012 2:22 AM<BR>To: Andrea 
  Giammarchi<BR>Cc: Axel Rauschmayer ; François REMY ; es-discuss<BR>Subject: 
  Re: Improving Function.prototype.bind<BR>
  <DIV class=HOEnZb>
  <DIV class=h5><BR>On Jan 5, 2012, at 4:47 PM, Andrea Giammarchi wrote:<BR><BR>
  <BLOCKQUOTE 
  style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
  class=gmail_quote>Guys, by any chance we can go back into the 
  topic?<BR></BLOCKQUOTE><BR>You'll have to polyfill Function.prototype.bind in 
  the current world of pre-ES5 browsers. Why not then go on to wrap it in a 
  memoizing version that uses a WeakMap if available (emulated with strong 
  keys/values array-based implementation if not)?<BR><BR>If you need this 
  machinery, it's all doable. If we should evolve a Harmony bind or betterBind 
  based on your experience and others, we can do that.<BR><BR>Right now the lack 
  of memoization is not a burning issue, from what I hear. You've raised it, I 
  think for the first time on es-discuss.<BR><BR>/be 
  <BR>______________________________<U></U>_________________<BR>es-discuss 
  mailing list<BR><A href="mailto:es-discuss@mozilla.org" 
  target=_blank>es-discuss@mozilla.org</A><BR><A 
  href="https://mail.mozilla.org/listinfo/es-discuss" 
  target=_blank>https://mail.mozilla.org/<U></U>listinfo/es-discuss</A><BR></DIV></DIV></BLOCKQUOTE></DIV><BR><BR 
clear=all>
<DIV> </DIV>-- <BR>    Cheers,<BR>    
--MarkM<BR></DIV></DIV></DIV></DIV></BODY></HTML>