next up previous contents
Next: 未完成データ構造 Up: 1.3 データとシンタクス Previous: 数値アトム

1.3.3 構造を持ったデータ

構造を持ったデータとは, 要素となるデータを集めてできているデータのこと である. KL1 で扱える構造を持つデータの代表的なものには, 以下のものが ある.gif

ファンクタ
ファンクタ構造の記法は, その名前であるアトム, 開括弧 (``('') 最初のもの以外の要素をカンマで区切って並べたもの, そし て閉括弧 (``)'') という順に記述する. たとえば `` a(b,c)'' は, 名前が a, 引数が b と c というファンクタ構造を表す. 要素はどんな 型でも良く, 入れ子構造をしていても良い. たとえば `` f(g(a,b),h(c))'' は名前が f, ふたつの引数がまたファンクタ構造であるよ うなファンクタ構造である.

コンス
コンスは任意の型のふたつの要素を持つ構造である. ふたつの要素は Lisp に習って car, cdr と呼ぶ. 表記にはカギ括弧対 (``['' と ``]'') の間に car, cdr の要素を縦棒 (``|'') で区切って書き並べる. たとえば ``[a|b]'' は car がアトム a, cdr がアトム b であるようなコンス を意味する.

コンスそれ自体はふたつの要素だけを持つ構造データだが, これを組み合わせ てさまざまなデータ構造を作れる. その代表がリスト構造である. コンスの car がひとつの要素, cdr がリストの残り, 要素がひとつもないリストはアト ム ``[]'' 表すものと取り決めれば, ふたつの要素 a, b を持つリス トは `` [a| [b| []]]'' と, ネストしたふたつのコンス を用いて表すことができる (図 1.2). このままではリストが長くな ると多数の括弧が必要になるので, これを `` [a,b]'' のように書き表 す.

  
図 1.2: コンスによるリストの表現





next up previous contents
Next: 未完成データ構造 Up: 1.3 データとシンタクス Previous: 数値アトム



KLIC