04/02/23 01:50
>>196
ふむ、若干面倒だね。とりあえず、パターンのシンボルに
リストがマッチするものとして書いてみた。
(defun match (vars vals)
(do ((vars vars (cdr vars))
(vals vals (cdr vals)))
((or (null vars) (null vals))
(not (or vars vals)))
(let ((var (car vars))
(val (car vals)))
(unless (cond ((eq var val) t)
((symbolp var) t)
((atom var) nil)
((eq (car var) 'quote)
(eq (cadr var) val))
((atom val) nil)
(t (match var val)))
(return)))))