consを使ったリスト

 consはドット対というリストを作るものである。ドット対とは( 値 . 参照先 )で成り立つリストである。
仮に( a . b )というドット対があった場合、aが値でbが参照先となる。
以下に例を示す。

(cons 'a 'b)            ;; ( a . b )      ①
(cons 'a '(b c))       ;; (a b c)       ② (cons 'a (cons 'b (cons 'c nil)))と同じ
(cons '(a b) '(b c)) ;; ((a b) b c) ③
(cons '(a c) 'b)       ;; ((a c) . b)  ④

①は前に説明したとおりでaが値で、bが参照先となっている。
②はaが値で、'(b c)ではなく'bが参照先となるため、(a b c)というリストになる。
③②と同様に'(a b)が値と見なされ、'(b c)ではなく'bが参照先となるため、((a b) b c)となる。
④②と同様に(ry

説明出来てるような出来てないような感じだけど、結局リストは見かけ上'(a b c)で配列っぽく見えるかもしれないが、きちんと( 値 . 参照先 )でつながってるって事を言いたかった。

まとめると、

(equal '(a b) '(a . (b . nil)))
t

であり、(a b) 、( a . ( b . nil))は同じであることがわかる。