Cons (Lisp)
Lisp において、cons はリストを実装するための基本的な構造である。具体的には、Lisp においては全てのリストは以下のいずれかである:
一般に nil と呼ばれる特別なオブジェクトである空のリスト ()
car としてリストの第一要素を持ち、 cdr としてリストの残りの要素を持つ cons セル
この構造は、単純な片方向連結リスト構造を作る。この連結リストは、 cons, car, cdr のみで操作することのできる構造をしている。nil は cons 対でない唯一のリストであることに気をつけなければならない。例として、1, 2, 3 の要素から成るリストを考えよう。そのようなリストは、以下の3ステップで作られる。
3 とnil(空リスト)のcons を作る。
2 とその結果とのcons を作る。
1 とその結果とのcons を作る。
つまり:
もしくはそれの短縮形として:
結果として、以下のリストが得られる:
以下のような図で表すことができる。
このリストは、一般に以下のように略記される:
要するに、cons は、すでに存在するリストの先頭に要素をひとつ付け加えるように働く。例えば、上で定義したリストをxとすると、(cons 5 x) は、以下のようなリストを生成する。
もうひとつの便利なリスト操作関数として、 append がある。それは、二つのリストを結合する。