Hi Boris, The generated code is much harder to read - there's a block declared there that does nothing, and you have to figure out that it does nothing if you're trying to read the code. It's deceptive.
I'd like to make a generalized solution involving only BLOCK itself, so that other code that generates BLOCKs can take advantage. Vladimir On Sat, Jul 28, 2012 at 9:36 AM, Boris Smilga <[email protected]> wrote: > On 21 Jul 2012, at 14:01, Vladimir Sedach wrote: >> >> [...] 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) [...] > > > Another approach would be to introduce a special PS-LOOP keyword (called > NOBLOCK or something in the same vein) which would make LOOP expand to PROGN > rather than to BLOCK. Then we could add the keyword to the internal LOOPs > and get the PROGNs back. This is simpler than checking for RETURNs, though > not necessary more elegant. > > That said, I don't quite see from the example above why the issue needs > fixing in the first place. You can't really mean that the block introduces > local scope for myName etc.? — JavaScript doesn't have block scope. So what > is your idea? > > Yours, > — B. Smilga. > > > > _______________________________________________ > parenscript-devel mailing list > [email protected] > http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel _______________________________________________ parenscript-devel mailing list [email protected] http://lists.common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
