引数リスト情報の表示を変更したい - lisp-cookbook-ja/common-lisp GitHub Wiki
引数リスト情報の取り出し/設定はANSI CLの仕様では規定されていませんが、処理系によってはサポートしている場合があります。
下記は、何らかの理由によって引数情報が貧弱な場合に設定し直す例です。
(defun arglist (fctn)
#+sbcl
(sb-kernel:%simple-fun-arglist (sb-kernel:%fun-fun fctn)))
(defun (setf arglist) (arglist fctn)
#+sbcl
(setf (sb-kernel:%simple-fun-arglist (sb-kernel:%fun-fun fctn))
arglist))
(defun foo (x y z)
(list (the string x) (the integer y) (the cons z)))
(arglist #'foo)
;=> (X Y Z)
(setf (arglist #'foo) '(string integer cons))
(arglist #'foo)
;=> (STRING INTEGER CONS)
(foo "foo" 8 '(foo))
;=> ("foo" 8 (FOO))