MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
Dedicated technical support for IF/Prolog ended Dec 31 2008.
This site is maintained as a community service only.
リストは順序づけられた要素の並びで、その長さは任意です。リストの要素(引数)は、アトムや複合項、その他のどんな項であってもよく、他のリストも含みます。
リストは空リストか、あるいは関数子がドット'.'で2つの引数、先頭と末尾を持つ複合項です。リストの末尾は、/ClocMel/のリストです。リストの末尾は、通常は空リストによって示され、以下のように'[]'で表します。
'.'(d,[])
リストに対して通常行なう操作は、それを先頭と末尾に分割することなので、IF/Prologには"先頭としてX、末尾としてYを持つリスト"を表現するための特別な表記法があります。これは[X|Y]と表され、XとYを分けている記号は縦棒です。このパタ−ンでは、以下に示すようにリストの先頭をXの値とし、リストの末尾をYの値とします。
?- [user].
| b([a,b,c]).
| b([11]).
| b([early, to, bed, and, [early, to, rise]]).
| end_of_file.
yes
?- b([X|Y]).
X = a
Y = [b,c] ;
X = 11
Y = [ ];
X = early
Y = [to, bed, and, [early, to, rise]]
yes
?- _
ダブルクオ−ト"..."で囲まれている文字列は、以下のようにASCII文字コ−ドのリストであることを示しています。
?- "abc" == [97,98,99].
yes
以下のようなリストを扱う組み込み述語があります。
#append(?リスト1,?リスト2,?リスト3)
リスト3は、リスト1にリスト2をつけ加えたものです。
concat(+コンカットリスト,-アトム)
concat(+コンカットリスト,+分離記号,-アトム)
「アトム」は、「コンカットリスト」の要素の結合したもので、concat/3では各要素の間に「分離記号」が入ります。
decompcons(+文字列_式,-文字リスト) 「文字リスト」は、「文字列_式」の文字のリストです。
# member(?要素,?リスト) 要素が「リスト」の「要素」の場合に成功します。
sort(+非順リスト,-順リスト) 項のリストをソ−トします。
reverse(+入力リスト,+出力リスト) 与えられたリストを逆順にします。
length(+リスト,-長さ) リストの長さを計算します。
以下の述語は、ユ−ザによって定義されなければなりません。
perm(?リスト,?置換リスト)
リストを置換によって並び換えます。最初の結果は、元のリストになります。それ以後は順に1要素ずつ置換されます。
perm([],[]).
perm(L,[H|T]) :- delete(H,L,L1), perm(L1,T).
delete(?要素,?リスト,?新リスト) 「リスト」のひとつの「要素」を削除します。
delete(X,[X|T],T).
delete(X,[H|T],[H|T1]) :- delete(X,T,T1).
|