引数のlistの要素が同じかどうか調べる関数set-equalをsubsetpを使って書きました。
(defun set-equal (lx ly &rest lzs)
 "Test equality of list as set."
 ;; !!TODO!! need keywords :test :test-not and :key
 (let((r(and(subsetp lx ly)(subsetp ly lx))))
  (cond((null lzs)r)
   (r(set-equal lx (car lzs) (cdr lzs)))
   (t nil) )))
この関数に:test :test-not :keyといったsubsetpに渡すキーワードを引数として渡せるようにしてやりたいと思っています。
単純に引数に書いてやればよいのですが、その場合にはsubsetpのキーワードのデフォルト値を調べ、
さらにtest test-notが排他になるようなコードを書いてやらなければならず、面倒くさいです。

簡単に書く方法は無いのでしょうか。