![](https://secure.gravatar.com/avatar/e42f6c21cb1b7d45ec30570df35cbee9.jpg?s=120&d=mm&r=g)
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@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@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@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
_______________________________________________ parenscript-devel mailing list parenscript-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel