(parse-macro 'foo '(x y z) '(1 2 3)) => (LAMBDA (#:WHOLE.5655 #:ENV.5654) (DECLARE (IGNORE #:ENV.5654)) (BLOCK FOO (DESTRUCTURING-BIND (X Y Z) (CDR #:WHOLE.5655) 1 2 3))) (parse-macro 'foo '(&whole whole x y z) '(1 2 3)) => (LAMBDA (#:WHOLE.5657 #:ENV.5656) (DECLARE (IGNORE #:ENV.5656)) (BLOCK FOO (LET ((WHOLE #:WHOLE.5657)) (DESTRUCTURING-BIND (X Y Z) (CDR #:WHOLE.5657) 1 2 3)))) (parse-macro 'foo '(&whole whole x y z &environment env) '(1 2 3)) => (LAMBDA (#:WHOLE.5659 #:ENV.5658) (BLOCK FOO (LET ((WHOLE #:WHOLE.5659) (ENV #:ENV.5658)) (DESTRUCTURING-BIND (X Y Z) (CDR #:WHOLE.5659) 1 2 3)))) (parse-macro 'foo '(&whole whole x y z &environment env) '((declare (special whole x)) 1 2 3)) => (LAMBDA (#:WHOLE.5661 #:ENV.5660) (BLOCK FOO (LET ((WHOLE #:WHOLE.5661) (ENV #:ENV.5660)) (DECLARE (SPECIAL WHOLE)) (DESTRUCTURING-BIND (X Y Z) (CDR #:WHOLE.5661) (DECLARE (SPECIAL X)) 1 2 3))))