The code fragment below will not work in a pending release of SBCL because it relies on a particular shape of a doubly-backquoted expression after only 1 evaluation. REQ-SUB, OPT-SUB, etc are each computed from an expression of depth 2. The LET binding of BASE-LST attempts to take CDR of REQ-SUB, etc.
(defun resubstitute-lambda-list (lambda-list)
"Deduce a comma-backquote expression needed to properly insert given lambda list into another call.
'(a b &optional c &rest d) -> `(,a ,b ,c ,@d)"
(multiple-value-bind (required optional rest keys) (alexandria:parse-ordinary-lambda-list lambda-list)
(cond ((cl:and optional keys) (error "This routine does not support mixing of &optional with &keys"))
((cl:and rest keys) (error "This routine does not support mixing of &rest and &keys"))
(t (let ((req-sub ``(,,@required))
(opt-sub ``(,,@(mapcar #'car optional)))
(key-sub (mapcan (lambda (x)
(cdr ``(,',(caar x) ,,(cadar x))))
(let ((base-lst ``(,,@(cdr req-sub) ,,@(cdr opt-sub) ,,@key-sub)))
`(append ,base-lst ,rest-sub)