[parenscript-devel] Tighter keyword arguments?
Red Daly
reddaly at gmail.com
Wed Aug 18 13:02:00 UTC 2010
It looks like this change broke the &KEY-OBJECT parameter (at least
for my branch). It also seems to incorrectly identify non-keyword
arguments that happen to match keyword args
(defun xxx (&key foo)
foo)
(xxx :bar :foo :foo 7) ;; => 'foo', but should be 7
I don't mind the loop approach, though it would be nice to lessen the
generated code.
Red
On Tue, Aug 17, 2010 at 10:33 PM, Vladimir Sedach <vsedach at gmail.com> wrote:
> I pushed a patch that simplifies keyword and optional parameter processing.
>
> I don't know what browsers you're targeting, but if you want even less
> noise, set *js-target-version* to 1.6 and it will use Array.indexOf to
> get at the keywords.
>
> Vladimir
>
> 2010/8/4 Daniel Gackle <danielgackle at gmail.com>:
>> The code that's generated for a keyword argument goes like this:
>> (ps (defun foo (&key a) (bar a))) =>
>> (abbreviated for clarity):
>> "function foo() {
>> var a;
>> // ... pick out and assign keyword args ...
>> if (a === undefined) {
>> a = null;
>> };
>> return bar(a);
>> };"
>> It seems to me that this could be made tighter as follows:
>> "function foo() {
>> var a = null;
>> // ... pick out and assign keyword args ...
>> return bar(a);
>> };"
>> The only difference I can think of is when someone explicitly passes
>> undefined
>> as a value for the argument, but that's an oxymoronic thing to do.
>> Can anyone think of a reason not to make this change? I like PS's keyword
>> arguments a lot, but the generated JS is bloated enough to make me wince.
>> _______________________________________________
>> parenscript-devel mailing list
>> parenscript-devel at common-lisp.net
>> http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>>
>>
>
> _______________________________________________
> parenscript-devel mailing list
> parenscript-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>
More information about the parenscript-devel
mailing list