「サマーウォーズ」はこちら

Powered by Ayapon RSS! オススメ アフィリエイト テレビ オークション

2008年02月15日

Schemeに挑戦4 コンスセル

Schemeは、Lisp系なので、リストの操作が上手なのだそうです。

リストの詳細は、こちらを。

3. リストを作ろう
http://www.shido.info/lisp/scheme3.html


リストの構成要素にコンスセルというものがあります。
コンスセルは、car部とcdr部の二つのアドレスを格納した、メモリ領域です。

コンスセルは、(cons 要素1 要素2)という形で指定します。

例えば、

(cons 1 2)

と、指定すると、car部に1、cdr部に2が入ります。


コンスセルは、数珠繋ぎに使うことが出来ます。
例えば、

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

というように指定できます。
こうすると、

最初のメモリ領域にcar部に1が入ります。
cdr部には次のメモリ領域のアドレスが入ります。

次のメモリ領域のcar部に2が入って、
cdr部に次のメモリ領域のアドレスが、

となって、数珠繋ぎに領域が繋がっていきます。


こうして数珠繋ぎになったコンスセルの一番最後のcdr部が「'()」になったものをリストと呼ぶそうです。

'()自体は、空のリストです。


「'」についてですが、これはquoteのことです。

例えば、
(+ 1 1)
と入力した時、結果は、計算されて「2」になります。

ですが、
'(+ 1 1)と入力すると、(+ 1 1)が計算されることなく、そのままの形で「(+ 1 1)」が出力されます。


つまり、'()は、空の()をさしているということです。


ちなみに、コンスセルを使ってないデータをatomといいます。
数字や文字は、atomにあたります。


もうすでにSchemeが難しいです。
このページは、

もうひとつの Scheme 入門
http://www.shido.info/lisp/idx_scm.html

を参考にして、理解できた分を書いてます。

間違ってる部分も多々あるかもしれません。ごめんなさい。
posted by kafuca at 21:37 | Comment(0) | TrackBack(0) | プログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/84182167

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。