This works: (js (macrolet ((foo (bar &rest body) `(+ , at body))) (foo 1 2 3 4))) This doesn't: (js (macrolet ((foo (bar &body body) `(+ , at body))) (foo 1 2 3 4))) Related to this, make ParenScript macrolet support all lambda list keywords that Lisp macrolet supports.