配列の実装法
MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

3種類の全く異なる配列を提供しています。第1に、array.proには最高で127要素まで使える変更可能な配列が定義されています。この配列は単純な複合項で表現されているために、サイズには限界があります。第2に、logarr.proでは、要素への対数時間でのアクセスが可能な実装を定義しています。第3に、配列の要素への大域的なアクセスは、dbarr.proで定義されているようにPrologのデータベースを使用することによって可能になります。第2、第3の実装方法では、配列のサイズには制限がありません。これらの3つの各実装方法に関して、要素のアクセス、配列の長さの定義、配列からリストへの変換あるいはリストから配列への変換のための述語が定義されています。

array.proファイル ------------------ array_length(+配列アップデート,-長さ) array_length(-配列アップデート,+長さ) 配列の長さを戻す、あるいは要素数が「長さ」の配列を作る。

array_to_list(+配列,-リスト) 配列の要素のリストを作る。

fetch(+インデックス,+配列,-要素) 配列のインデックス番目の要素の値を得る。

list_to_array(+リスト,-配列) リストから新しい配列を作る。

store(+インデックス,+旧配列,+要素,-新配列) 旧配列のインデックス番目の位置に、要素を挿入した配列を新配列とする。

dbarr.proファイル ----------------- array_length(+名前,-長さ) array_length(+名前,+長さ) 配列名が「名前」である配列の長さを返す。または、配列名が「名前」で要素数が「長さ」の配列を作る。

modify_array_length(+配列名,+長さ) 配列の現在の長さを変更する。要素は保存される。

list_to_array(+リスト,+配列名) リストからリストと同じ長さで名前として「配列名」を持つ配列を作る

fetch(+インデックス,+配列名,-要素) 「配列名」を持つ配列のインデックス番目の要素を返す。

store(+インデックス,+配列名,+要素) 「配列名」を持つ配列のインデックス番目に「要素」を格納する。

array_to_list(+配列名,-リスト) 配列の正のインデックスを持つ要素からなるリストを返す。

array_to_varlist(+配列名,-リスト) 配列を、その配列のサイズと同じ長さを持つリストに変換する。

logarr.proファイル ------------------ new_array(-配列) 新しい配列を初期化する。

is_array(+配列) 配列として適切かどうかをチェックする。

aref(+インデックス,+配列,-要素) 配列のインデックス番目の要素を返す。要素がまだセットされていない時には失敗する。

array_to_list(+配列,-リスト) 配列を「インデックス : 要素」のリストに変換する。

list_to_array(+リスト,-配列) リストから新しい配列を作る。

arefa(+インデックス,+配列,?要素) aref/3と同じ。要素がセットされていない時には、新しい配列を作って返す。

arefl(+インデックス,+配列,-要素) aref/3と同じ。要素がセットされていない時には、[]を返す。

aset(+インデックス,+配列,+要素,-新配列) 配列のインデックス番目に要素をセットした新配列を作る。


戻る 続く..