I ran into a bug in ps::case (patch below). The trouble occurs when one of the keys that case is trying to match on is quoted: (ps::ps-macroexpand '(case val ('a (b)))) => (SWITCH VAL (QUOTE) (A (B))) This yields the following nonsensical js: "switch (val) { case quote: case a: b();};" A better macroexpansion would avoid processing the quoted form like a list, yielding: (SWITCH VAL ('A (B))) This doesn't produce any javascript, but rather an error: (ps (case val '(a (b)))) => Cannot translate quoted value A to javascript [Condition of type SIMPLE-ERROR] ... which is the desired behavior, because PS always produces this error when encountering a quoted form it doesn't understand. The reason this came up is that I'm building a specialized compiler on top of PS that handles quoted forms by turning them into strings. I've got this to work by means of :around methods on ps::compile-parenscript-form. But now the above bug with ps::case becomes a show-stopper because I need it to work with quoted keys (not just signal an error). I fixed it like so: hunk ./src/special-forms.lisp 189 - (cond ((listp val) + (cond ((and (listp val) (not (eq (car val) 'quote))) Could this fix please be added to PS? Dan