読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

リスト遊び 5-5 等しいリスト*

読書ノート

前回
リスト遊び 5-4 集合* - by shigemk2
equivを改造する
また例によって、condを拡張することで、入れ子のリストも
比較出来るように拡張する。

(defun equiv (x y)
  (cond
   ((and (null x) (null y)) t)
   ((or (null x) (null y)) nil)
   (t (and (eq (car x) (car y))
	(equiv (cdr x) (cdr y))))))
equiv
(equiv '(1 2 3) '(1 2 3))
t
(equiv '((1) 2 3) '((1) 2 3))
nil

(defun equiv* (x y)
  (cond
   ((and (null x) (null y)) t)
   ((or (null x) (null y)) nil)
   ((and (consp (car x)) (consp (car y)))
    (and(equiv* (car x) (car y))
	(equiv* (cdr x) (cdr y))))
   ((or (consp (car x)) (consp (car y))) nil)
   (t (and (eq (car x) (car y))
	   (equiv* (cdr x) (cdr y))))))
equiv*
(equiv* '(1 2 3) '(1 2 3))
t
(equiv* '(1 2 3) '(1 2 4))
nil

(equiv* '((1) 2 3) '(1 2 3))
nil

リスト遊び―Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language)

リスト遊び―Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language)