<cl> (setq *lecture-language* '((software1 . pascal) (software2 . c) (software3 . lisp) (software4 . smalltalk))) ((software1 . pascal) (software2 . c) (software3 . lisp) (software4 . smalltalk)) <cl> (assoc 'software3 *lecture-language*) (software3 . lisp) <cl> (assoc 'software4 *lecture-language*) (software4 . smalltalk) <cl> (defun language-of (lecture database) (cdr (assoc lecture database))) language-of <cl> (language-of 'software1 *lecture-language*) pascalこのようにデータベースからデータをとってくる場合にassocを用います.連 想リストを作る関数としてaconsや pairlis があります.また,assocはデータ をとり出す関数ですが,:test, :keyの引数を与えることができます.
<cl> (acons 'a '(1) '((b 2) (c 3))) ((a 1) (b 2) (c 3)) <cl> (pairlis '(a b c) '(1 2 3)) ((c . 3) (b . 2) (a . 1)) <cl> (pairlis '(a b c) '((1) (2) (3))) ((c 3) (b 2) (a 1)) <cl> (assoc 'a '((a 1) (b 2) (c 3))) (a 1) <cl> (assoc '(b) '(((a) 1) ((b) 2) ((c) 3))) nil <cl> (assoc '(b) '(((a) 1) ((b) 2) ((c) 3)) :test #'equal) ((b) 2) <cl> (assoc 'c '(((a) 1) ((b) 2) ((c) 3)) :test #'equal) nil <cl> (assoc 'c '(((a) 1) ((b) 2) ((c) 3)) :test #'equal :key #'car) ((c) 3)この連想リストを用いてグラフを表現したものが*graph2*です.