by shigemk2

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

リスト遊び 4-6 連想リスト その2

前回
リスト遊び 4-6 連想リスト その1 - by shigemk2

alistの中からCARが指すデータがkeyと同一であるドット対を返す関数assqを
作成する。

(assq 'lily '((rose . "red") (violet . "blue") (lily . "white")))
=> (lily . "white")

(defun assq (key alist)
  (cond
   ((null alist) nil)
   ;; 先頭のドット対を調べ、ドット対のCARが指すデータがkeyと同一なら、その先頭のドット対を返す
   ((eq key (car (car alist))) (car alist))
    (t (assq key (cdr alist)))))
assq

(assq 'lily '((rose . "red") (violet . "blue") (lily . "white")))
(lily . "white")
(assq 'lily '((lily . "white")))
(car '((lily . "white")))

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

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