<br><br><div class="gmail_quote">On Wed, Jun 8, 2011 at 3:05 AM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.com">brendan@mozilla.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div><div class="im"><div>On Jun 8, 2011, at 2:45 AM, Kam Kasravi wrote:</div><br><blockquote type="cite"><div bgcolor="#FFFFFF"><div>Just as the private(this) is used to expose the private instance record,</div>
</div></blockquote><div><br></div></div>Please read </div><div><br></div><div><li><div> <code>private(this)</code>, e.g., is</div>
<ul>
<li><div> unbearably verbose;</div>
</li>
<li><div> leaks an implementation detail.</div>
</li>
</ul>
</li><div>from <a href="http://wiki.ecmascript.org/doku.php?id=harmony:classes#open_issues" target="_blank">http://wiki.ecmascript.org/doku.php?id=harmony:classes#open_issues</a>.</div><div><br></div><div>The syntax is a placeholder. It will not last.</div>
<div class="im"><div><br></div><div><br></div><blockquote type="cite"><div bgcolor="#FFFFFF"><div> could static([[Constructor]]) be introduced to provide access to the union of static properties across the set of constructor objects? (I know that their is some concern about the lengthy syntax of private())<br>
</div></div></blockquote><div><br></div></div>It's not "concern", it is an open issue to resolve by using better syntax.</div><div><br></div><div>What does "union of static properties across the set of constructor objects" mean? We're not reifying sets of properties as objects, if that's what you mean (static private yikes).</div>
<div><br></div><div>I can see how private(foo) brings this to mind. This is the problem I clumsily labeled "leaks an implementation detail".</div><div><br></div><div><div class="im"><br><blockquote type="cite"><div bgcolor="#FFFFFF">
<div>Regarding the use of private(AssignmentExpression), does it provide access to all private ExportableDefinition's regardless of what inherited class they were declared in? That is given</div><i><span>class</span> Monster <span>{</span> </i><div>
<i>  constructor<span>(</span>health<span>)</span> <span>{ </span></i></div><div><i><span>    private</span> health = health; </i></div><div><i>   <span>}</span></i></div><div><i>} </i></div><div><i><br></i></div><div><i>class GilaMonster prototype Monster {<br>
  constructor<span>(owner</span><span>)</span> <span>{ </span></i></div><div><i><span>    super(10);</span> </i></div><div><i>    private owner = owner;</i></div><div><span><i>  }</i></span><div><i>  eat(critter) { </i></div>
<div><i>    If(critter === private(this).owner) {</i></div><div><i>      private(this).health = 0; </i></div><div><i>    } else {</i></div><i>      private(this).health++;</i><div><i>    }</i></div><div><i>  }</i></div><div>
<i>}</i></div><div><br></div><div>Should the GilaMonster's private record include health?</div></div></div></blockquote><div><br></div></div>The "private record" especially views as an "object" is a kind of placeholder too. It doesn't help to think of it as a record. It probably does not help to think of it as an object, either, especially if you cannot get at it via anything like the still-straw private(this) or private(other) syntax.</div>
<div><br></div><div>On another topic, it does seem like "protected" is inevitable, doesn't it?</div></div></blockquote><div><br></div><div>Actually, it isn't another topic. It's why Kam's GilaMonster cannot see Monster's "health". "private" means "private to the class", not "private to the class and subclasses". "protected" would mean the second, and no, I don't think it's inevitable. </div>
<div><br></div><div>E and Caja have been doing very well with "private", "public", and inheritance, and I've only ever been frustrated by the lack of "protected" once in a blue moon. And it was always easy to work around its absence. Given ES-next's private names and weak maps, it becomes even easier to work around the absence of "protected". Btw, in both C++ and Java, the semantics of "protected" is a mess, in different ways.</div>
<div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div><br></div><font color="#888888"><div>
/be</div></font><div class="im"><div><br><blockquote type="cite"><div bgcolor="#FFFFFF"><div><div><br></div><div><br>On Jun 6, 2011, at 11:08 AM, Allen Wirfs-Brock <<a href="mailto:allen@wirfs-brock.com" target="_blank">allen@wirfs-brock.com</a>> wrote:<br>
<br></div><div></div><blockquote type="cite"><div><span></span><br><span>On Jun 6, 2011, at 10:32 AM, Brendan Eich wrote:</span><br><span></span><br><blockquote type="cite"><span>On Jun 6, 2011, at 10:19 AM, Bob Nystrom wrote:</span><br>
</blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><blockquote type="cite"><span>On Sun, Jun 5, 2011 at 9:35 PM, Peter Michaux <<a href="mailto:petermichaux@gmail.com" target="_blank">petermichaux@gmail.com</a>> wrote:</span><br>
</blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>Based on my understanding of what the desugared code would be, the</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">
<span>last line above would be an error because Dragon.allMonsters is</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>undefined.</span><br></blockquote></blockquote><blockquote type="cite">
<blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>That's correct. Do you have any examples of code where inheriting the constructor objects would be helpful?</span><br>
</blockquote></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Used all the time in Ruby, and in some Smalltalks. Supported by CoffeeScript. See</span><br></blockquote><span></span><br>
<span>Actually, all modern Smalltalks where modern means anything post 1980</span><br><span></span><br><span></span><br><span></span><br><span></span><br><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite">
<span><a href="https://gist.github.com/1007150" target="_blank">https://gist.github.com/1007150</a></span><br></blockquote><blockquote type="cite"><span><a href="https://gist.github.com/1006999" target="_blank">https://gist.github.com/1006999</a></span><br>
</blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>(warning: Ruby reading skills required).</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite">
<span>/be</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>_______________________________________________</span><br></blockquote><blockquote type="cite"><span>es-discuss mailing list</span><br>
</blockquote><blockquote type="cite"><span><a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a></span><br></blockquote><blockquote type="cite"><span><a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a></span><br>
</blockquote><span></span><br><span>_______________________________________________</span><br><span>es-discuss mailing list</span><br><span><a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a></span><br>
<span><a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a></span><br></div></blockquote></div></div></blockquote></div><br></div></div><br>_______________________________________________<br>

es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>    Cheers,<br>    --MarkM<br>