<html><head><base href="x-msg://1528/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 18, 2013, at 12:24 PM, BelleveInvis wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div class="hmmessage" style="font-size: 12pt; font-family: 微软雅黑; "><div dir="ltr"><div style="line-height: 21px; color: rgb(68, 68, 68); font-family: 'Microsoft YaHei UI', 'Microsoft YaHei', 宋体, Calibri, sans-serif; font-size: 15px; ">...this causes an inconsistency that in expression `[f().x] = [g()]`, g is called BEFORE f. That is weird, and differ from `f().x = g()` where g is called after f.</div></div></div></span></blockquote><br></div><div>but consider</div><div>   <span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: 'Microsoft YaHei UI', 'Microsoft YaHei', 宋体, Calibri, sans-serif; font-size: 15px; line-height: 21px; ">[f().x, h().y] = g();  //assume g() evaluates to an array-like object (and intentionally removed the RHS array literal)</span></div><div><span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: 'Microsoft YaHei UI', 'Microsoft YaHei', 宋体, Calibri, sans-serif; font-size: 15px; line-height: 21px; ">even if evaluation of the RHS was delayed until after evaluating the first LHS element, g() would still be evaluated before h().  You might consider  evaluating all of the LHS elements to References before evaluating the RHS.  That could require accumulating an arbitrary large number of pending References and it wouldn't work for object destructurings.  For example:</span></div><div><span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: 'Microsoft YaHei UI', 'Microsoft YaHei', 宋体, Calibri, sans-serif; font-size: 15px; line-height: 21px; "><br></span></div><div><font class="Apple-style-span" color="#444444" face="'Microsoft YaHei UI', 'Microsoft YaHei', 宋体, Calibri, sans-serif"><span class="Apple-style-span" style="font-size: 15px; line-height: 21px;">{x:  f().x=_=>{throw "no x"}(),  h().y} = getPoint();</span></font></div><div><font class="Apple-style-span" color="#444444" face="'Microsoft YaHei UI', 'Microsoft YaHei', 宋体, Calibri, sans-serif"><span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"><br></span></font></div><div><font class="Apple-style-span" color="#444444" face="'Microsoft YaHei UI', 'Microsoft YaHei', 宋体, Calibri, sans-serif"><span class="Apple-style-span" style="font-size: 15px; line-height: 21px;">Allen</span></font></div><br></body></html>