Hi Boris,
Thank you for the patches, the code makes sense.
I've applied 0001 and 0002. Because patch 0003 causes all LOOPs to be wrapped in blocks, and loop is used in various places, this means that this code:
(defun hello-world (&key ((:my-name-key my-name) 1)) my-name)
Used to look like:
function helloWorld() { var _js2 = arguments.length; for (var n1 = 0; n1 < _js2; n1 += 2) { switch (arguments[n1]) { case 'my-name-key': myName = arguments[n1 + 1]; }; }; var myName = 'undefined' === typeof myName ? 1 : myName; return myName; };
And now looks like:
function helloWorld() { nilBlock: { var _js2 = arguments.length; for (var n1 = 0; n1 < _js2; n1 += 2) { switch (arguments[n1]) { case 'my-name-key': myName = arguments[n1 + 1]; }; }; }; var myName = 'undefined' === typeof myName ? 1 : myName; return myName; };
I need a bit of time to think about the right way to fix that (probably by fixing block not to emit if the body contains no return, since it is all lexical), but in the meantime I haven't pushed patches 0003 and 0004.
BTW, I noticed this when I ran the tests: (asdf:load-system :parenscript.test) (ps-test:run-tests)
Currently there's not a lot of tests for LOOP itself, so if anyone wants to contribute some test cases, that would be great.
Thank you, Vladimir
PS - I'm back and I'll try to address the other threads that came up on the mailing list soon.
On Mon, Jul 16, 2012 at 11:45 AM, Boris Smilga boris.smilga@gmail.com wrote:
On Mon, Jul 16, 2012 at 3:43 PM, Boris Smilga boris.smilga@gmail.com wrote:
please find attached three patches
s/three/four/
parenscript-devel mailing list parenscript-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel