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):

  (ps (not (not x)))
    now => "x;"
    formerly => "!!x"

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.

(The above pertains to commit 7c417818 and its two predecessors.)

Daniel