I pushed another fix for PS LOOP, this time to make :WHILE and :UNTIL clauses play well with :FOR clauses. Working on this, I noticed the generated code was getting lots of expressions like "!!x". So I tweaked the NOT special form to eliminate double negatives (this wasn't a big deal because the NOT special form was already doing some operand reduction):<br>
<br> (ps (not (not x)))<br> now => "x;"<br> formerly => "!!x"<br><br>Also, we sometimes get syntactically illegal double RETURNs in our generated JS (things like "return return x;"). Although this only happens when we make a mistake and use the wrong macro, it can be hard to track down the problem. Since "return return" is never legal JS, I added an error check to the RETURN special form to signal when PS is given such a bad expression to compile.<br>
<br>(The above pertains to commit 7c417818 and its two predecessors.)<br><br>Daniel<br><br><br><br><br>