>>28
(mapcar #'if '(t nil t) '(1 2 3) '(a b c))
You could do that if you just write a wrapper against the special-form/macro. I was going to post here a generic wrapper-generator for just what you wanted, but then half-way through me writing it, I found a pretty annoying bug in SBCL's internals (which I don't feel like reporting at this moment) with how it handles obtaining the argument list of special forms (macro-expansion time vs run-time). It wasn't too difficult to write, but I'm sure my own code isn't absolutely bug-free either (it calls alexandria's lambda-list parser and generates a form from there), if I wasn't lazy, I could probably spend a few more hours and make it good enough for my own standards, but unfortunately I don't really need the macro for most of my needs, so it'll have to wait for another day. I also think that someone else on c.l.l has already written something similar in the past, if you can't find their post, you just need
swank-backend:arglist (de-facto portable arglist grabber, but unfortunately there's a bug in SBCL which makes it fail when doing it at macroexpansion time for special forms, but works at run-time) and
alexandria:parse-ordinary-lambda-list (if you don't want to write your lambda list parser, it's not too pleasant).