<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body dir="auto">
<div>How about just `Promise`, following `String`, `Number`, `RegExp`, etc.?</div>
<div><br>
</div>
<div>(I tend to agree with Tab that both #a and #b should return a new promise. But we do need an easy coercion function, as Mark emphasizes.)</div>
<div><br>
On Aug 21, 2013, at 18:31, "Mark S. Miller" <<a href="mailto:erights@google.com">erights@google.com</a>> wrote:<br>
<br>
</div>
<blockquote type="cite">
<div>
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Wed, Aug 21, 2013 at 3:16 PM, Tab Atkins Jr. <span dir="ltr">
<<a href="mailto:jackalmage@gmail.com" target="_blank">jackalmage@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Wed, Aug 21, 2013 at 1:57 PM, Mark S. Miller <<a href="mailto:erights@google.com">erights@google.com</a>> wrote:<br>
> Excellent excellent! It seems we are in agreement and clarity on all<br>
> terminology issue, and on almost complete agreement on substantive issues.<br>
> The only remaining issue is whether either of the following expressions<br>
> always return a fresh promise, and if they are exactly equivalent:<br>
><br>
> a) Promise.resolve(v1)<br>
> b) new Promise(r=>r.resolve(v1))<br>
><br>
> When v1 is a promise,<br>
> x) I prefer that #a return v1 and #b return a fresh promise that adopts v1.<br>
> y) You prefer that both #a and #b return a fresh promise<br>
> z) The fewest feasible allocations would have both return v1.<br>
> w) I do not expect anyone will want #a to return a fresh promise and #b to<br>
> return v1.<br>
><br>
> We both agree that if we settle on either #y or #z, then #a and #b are<br>
> equivalent. Otherwise they are equivalent up to this issue.<br>
><br>
> The reason I prefer that #b return a fresh promise is that it is surprising<br>
> for a "new" expression to return something other than a fresh object.<br>
<br>
</div>
I think it's super bizarre for a class static to act differently from<br>
the trivial desugaring to the same-named instance method.  (In this<br>
case, it's not *quite* an instance method, but close enough.  ^_^  It<br>
would be an instance method if we weren't caring about capability<br>
grants.)<br>
<div class="im"><br>
> The reason I prefer #a is that the primary use case for #a is coercion --<br>
> given possible promise v1, gimme a guaranteed genuine promise that<br>
> designates the same (possibly eventual) non-promise. See calls to the Q()<br>
> function at <a href="http://wiki.ecmascript.org/doku.php?id=strawman:concurrency" target="_blank">
http://wiki.ecmascript.org/doku.php?id=strawman:concurrency</a> and<br>
> <a href="http://es-lab.googlecode.com/svn/trunk/src/ses/contract/" target="_blank">
http://es-lab.googlecode.com/svn/trunk/src/ses/contract/</a> (which corresponds<br>
> to <a href="http://research.google.com/pubs/pub40673.html" target="_blank">http://research.google.com/pubs/pub40673.html</a> ). These calls are numerous<br>
> and necessary, and sufficiently frequent that the extra transient allocation<br>
> in the typical case will be a noticeable cost.<br>
<br>
</div>
That's reasonable, but we should do it with a different function that<br>
just promotes things into promises,</blockquote>
<div><br>
</div>
<div>Good idea. As a coercing function, a natural name is Promise.as(v1). Also, as a common coercer, brevity is a virtue.</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">
or leave it to library code when<br>
they need it.  (We don't, for example, have such an operation for<br>
Array/Map/Set, though I have used such an operation before.)<br>
<span class="HOEnZb"><font color="#888888"><br>
~TJ<br>
</font></span></blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
    Cheers,<br>
    --MarkM </div>
</div>
</div>
</blockquote>
<blockquote type="cite">
<div><span>_______________________________________________</span><br>
<span>es-discuss mailing list</span><br>
<span><a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a></span><br>
<span><a href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a></span><br>
</div>
</blockquote>
</body>
</html>