以前書いたarglist関数の見た目がやっぱりダメダメなことに気づいた。
(filename &key (direction :input) (if-does-not-exist "FIXME") ...) => (filename &key (direction input) (if-does-not-exist FIXME) ...)
ということでまたarglistを書き直した。 キーワード以外のシンボルにフィルターをかけるような関数をつくって解決。
# 何かまだバグがありそうで恐い…
(defun arglist (x)
(labels ((arglist-helper (x)
(cond ((consp x)
(mapcar #'arglist-helper x))
((and (symbolp x) (not (keywordp x)))
(intern (string x)))
(t
x))))
(arglist-helper (arglist-1 x))))
0 件のコメント:
コメントを投稿