(defun init-matching-variables (vars) (dolist (v vars vars) (setf (get v 'variable-p) t))) (defun clear-matching-variables (vars) (dolist (v vars vars) (setf (get v 'variable-p) nil))) (defun variable-p (x) (and (symbolp x) (get x 'variable-p)))というように,シンボルのvariable-pという属性リストに T が入っていれば, マッチング変数とみなし,入っていなければ変数ではないというように 判定させるわけである.
> (init-matching-variables '(a b c)) (A B C) > (variable-p 'a) T > (match '((a) b x y c) '((d) e x y z)) ((C . Z) (B . E) (A . D)) > (clear-matching-variables '(a b c)) (A B C) > (match '((a) b x y c) '((d) e x y z)) FAILという具合に,init-matching-variablesで変数を宣言し, clear-matching-variablesで変数でなくするように宣言する.