2008年10月5日日曜日

[xyzzy]arglist関数を作り直した

以前書いた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 件のコメント:

コメントを投稿