Consとは? わかりやすく解説

Cons

名前 コンズ

cons (Lisp)

(Cons から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/08/24 10:54 UTC 版)

consは、ほとんどのLisp方言における基本的な関数である。cons は、2つの、値もしくは値へのポインタを保持するオブジェクトを構成(construct)する。これによって作られたオブジェクトは、(cons)セル、cons、non-atomic S式(NATS式)、(cons)対などと呼ばれる。cons の結果のペアの左側(第一要素)は car[注釈 1]と呼ばれ、右側(その残り)は cdr[注釈 2]と呼ばれる。

使い方

cons 自体は単に、データの順序対を保持することができるだけだが、しばしばリスト二分木などの複雑なデータ構造を保持するためにも使われる。

例えば、Lisp の式、(cons 1 2) は、左側(car部)に1 、右側(cdr部)に2 を持ったcons セルを作る。Lisp の表記では、(cons 1 2) の値は次のようになる:

(1 . 2)

1 と2 の間に. があるのに注意。これはこのS式が、「リスト」ではなく「ドット対」であることを示している。

リスト

リスト(42 69 613) を表すcons セルダイヤグラム
cons を使って書いた場合:
(cons 42 (cons 69 (cons 613 nil)))
list を用いた場合:
(list 42 69 613)

Lisp において、cons はリストを実装するための基本的な構造である。具体的には、Lisp においては全てのリストは以下のいずれかである:

  1. 一般に nil と呼ばれる特別なオブジェクトである空のリスト ()
  2. car としてリストの第一要素を持ち、 cdr としてリストの残りの要素を持つ cons セル

この構造は、単純な片方向連結リスト構造を作る。この連結リストは、 cons, car, cdr のみで操作することのできる構造をしている。nil は cons 対でない唯一のリストであることに気をつけなければならない。例として、1, 2, 3 の要素から成るリストを考えよう。そのようなリストは、以下の3ステップで作られる。

  1. 3 とnil(空リスト)のcons を作る。
  2. 2 とその結果とのcons を作る。
  3. 1 とその結果とのcons を作る。

つまり:

(cons 1 (cons 2 (cons 3 nil)))

もしくはそれの短縮形として:

(list 1 2 3)

結果として、以下のリストが得られる:

(1 . (2 . (3 . nil)))

以下のような図で表すことができる。

 *--*--*--nil
 |  |  |
 1  2  3

このリストは、一般に以下のように略記される:

(1 2 3)

要するに、cons は、すでに存在するリストの先頭に要素をひとつ付け加えるように働く。例えば、上で定義したリストをxとすると、(cons 5 x) は、以下のようなリストを生成する。

(5 1 2 3)

もうひとつの便利なリスト操作関数として、 append がある。それは、二つのリストを結合する。

木構造

の部分にのみ値を持つデータ構造である二分木もまた、cons によって容易に作ることができる。例えば、以下のコードは

(cons (cons 1 2) (cons 3 4))

以下のような結果になる。

((1 . 2) . (3 . 4))

これはつまり、以下のような図で表すことができる:

   *
  / \
 *   *
/ \ / \
1 2 3 4

正確には、先ほどの例に出てきた(1 2 3) というリストもまた二分木である。それは、先ほどの図を少し変形することで容易にわかる:

 *--*--*--nil
 |  |  |
 1  2  3

これは、以下の図と同様である。

   *
  / \
 1   *
    / \
   2   *
      / \
     3  nil

脚注

注釈

  1. ^ 由来は、contents of the address part of the register[1]
  2. ^ 由来は、contents of the decrement part of the register[1]

出典

  1. ^ a b ポール・グレアム『ANSI Common Lisp』ピアソン・エデュケーション、2002年、280頁。ISBN 4-89471-433-7 

関連項目

外部リンク

  • SDRAW, Common Lisp code for drawing draws cons cell structures. From David S. Touretzky.

cons

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/05/12 04:10 UTC 版)

オンライン整数列大辞典」の記事における「cons」の解説

ネイピア数 (A001113) や円周率 (A001203) などの、数学上定数を各桁の数並べて表した数列であることを意味する

※この「cons」の解説は、「オンライン整数列大辞典」の解説の一部です。
「cons」を含む「オンライン整数列大辞典」の記事については、「オンライン整数列大辞典」の概要を参照ください。

ウィキペディア小見出し辞書の「Cons」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Cons」の関連用語

Consのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Consのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのcons (Lisp) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのオンライン整数列大辞典 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS