<div>< It wouldn't work for calling JavaScript functions that used the</div><div>arguments pseudo-array, either for arbitrary arity or for passing</div><div>arguments on. There's lots of JS functions around that do things like</div>

<div>foo.apply(null, slice(arguments, x)) or whatever. ></div><div><br></div><div>True, but PS already imposes Lisp lambda-list semantics on the</div><div>arguments pseudo-array. Functions that manipulate it (other than for</div>

<div>just passing arguments on) will break on things like &key params if</div><div>they don't interpret them correctly. So I'm not sure that the price</div><div>here isn't one we've already had to pay, and if that's true then it</div>

<div>hasn't turned out to be much of a problem.</div><div><br></div><div>I'd be interested to see examples that break on the implicit MV arg</div><div>that don't already break on &key. Passing the arguments pseudo-array</div>

<div>on, for example, shouldn't break. It just throws the responsibility</div><div>for parsing the MV arg on to somebody else, which in non-MV-aware</div><div>cases will typically ignore it and in MV-aware cases will handle it</div>

<div>according to the protocol.</div><div><br></div><div>It strikes me that the implicit MV arg is a generalization of the &key</div><div>mechanism where the key is not a symbol (string) but a sentinel</div><div>object. The big break with current practice is that it's hidden rather</div>

<div>than specified by the user at the source level. Makes me wonder if a</div><div>different syntax than MULTIPLE-VALUE-BIND might help - something to</div><div>make the underlying mechanism less unexpected...</div><div>

<br></div><div>To be sure, it's a hack and not at all what one would do with proper</div><div>access to the internals. But I wonder if it's as good as we're likely</div><div>to get by way of a correct implementation.</div>

<div><br></div><br><div class="gmail_quote">On Sun, Sep 2, 2012 at 6:28 PM, Vladimir Sedach <span dir="ltr"><<a href="mailto:vsedach@gmail.com" target="_blank">vsedach@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">> We may have crossed a wire here. When you said, "You can do that with<br>
> a global table instead of setting a property on the function object,"<br>
> I thought you had in mind a global table keyed by function *name*,<br>
> which is why I asked about lambdas since they have no names. JS won't<br>
> let you use a function object as a key so one would have to concoct<br>
> some naming scheme.<br>
<br>
</div>For my first prototype for the new MV mechanism, that's what I thought<br>
and used gensyms. But then I tried foo[<function object>] and that<br>
works in both FF and CL-JS. But looking at ECMAScript, property<br>
identifiers do indeed have to be JavaScript String objects<br>
(<a href="http://ecma-international.org/ecma-262/5.1/#sec-8.10" target="_blank">http://ecma-international.org/ecma-262/5.1/#sec-8.10</a>).<br>
<div class="im"><br>
> Moreover, if it worked for MV, the sentinel idea could be used to tag<br>
> anything else we wanted into the call. Seems like that could be pretty<br>
> powerful.<br>
><br>
> Where does this break?<br>
<br>
</div>It wouldn't work for calling JavaScript functions that used the<br>
arguments pseudo-array, either for arbitrary arity or for passing<br>
arguments on. There's lots of JS functions around that do things like<br>
foo.apply(null, slice(arguments, x)) or whatever.<br>
<div class="im"><br>
> p.s. There's also a way to communicate exactly how many return values<br>
> are desired, short-circuiting any computation that might be needed to<br>
> generate the full VALUES list. (I think this point is independent of<br>
> the above idea but I'll adapt the same examples.) Suppose we have:<br>
<br>
</div>In general you have to evaluate all the expressions given to values<br>
for their side-effects, so this would only save a few assignments.<br>
<span class="HOEnZb"><font color="#888888"><br>
Vladimir<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
parenscript-devel mailing list<br>
<a href="mailto:parenscript-devel@common-lisp.net">parenscript-devel@common-lisp.net</a><br>
<a href="http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel" target="_blank">http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel</a><br>
</div></div></blockquote></div><br>