Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

Emacs Lisp: 連想リスト

Emacs Lisp: 連想リスト

ドット対リストです。
ドット対のcarが指すデータが、cdrで取得する値を連想させるデータになっているリスト。

'((rose . red)(violet . blue)(lily . white))

連想リストを活用する関数「assq」を定義。
CommonLispにassocって名前の関数があったような気が・・・まぁ、気にしない。

(defun assq (key alist)
  (cond
   ((null alist) nil)
   ((eq key (car (car alist))) (car alist))
   (t (assq key (cdr alist)))))

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