In Lisp:
(defmacro lisp-blah (x y &whole w) w) (macroexpand-1 '(lisp-blah 10 20)) => (LISP-BLAH 10 20)
That's not a feature, that's a bug in Allegro CL!
"If &whole and a following variable appear, they must appear first in lambda-list, before any other parameter"
Patch for correctly implementing top-level &whole in ParenScript macro lambda lists forthcoming.
Also, if you do this:
(defmacro/ps blah (x y &whole w) w)
then the following expression hangs:
(ps::ps-macroexpand '(blah 10 20))
Recursive macroexpansion! Try (defmacro foo (&whole x a b) x) (foo 1 2) and it should hang in Lisp too (it does in SBCL).
Happy hacking, Vladimir