[Next]組込み関数 [Previous]PoP本体 [Up]リファレンス [Top]

組込み述語

PoPには組込み述語が用意されています.
組込み述語の名前と使用者定義述語の名前が衝突した場合は,使用者定義述語が優先されます.

実行を制御する述語

!
カット・オペレータです.
true
成功します.以下の定義と同値です.
true.
fail
失敗します.以下の定義と同値です.
fail :- not(true).
repeat
常に成功します.以下の定義と同値です.
repeat.
repeat :- repeat.
not(V1)
述語V1の否定です.以下の定義と同値です.
not(_V1) :- V1, !, fail.
not(_).

データ型を検査する述語

number(V1)
integer(V1)
float(V1)
string(V1)
atom(V1)
atom1(V1)
atom2(V1)
list(V1)
clause(V1)
nil(V1)
それぞれV1が,数値(整数あるいは浮動小数点数),整数,浮動小数点数,文字列,アトム,単純アトム(引数を持たないアトム),複合アトム(引数をつアトム),リスト,節,NIL(空リスト)であれば成功し,それ以外では失敗します. なお,NILはリストではありません.

比較を行う述語

eq(V1, V2)
ne(V1, V2)
lt(V1, V2)
le(V1, V2)
gt(V1, V2)
ge(V1, V2)
V1V2を評価した後,それらの大小関係を判定します. V1V2は評価可能(数値,文字列,組み込み関数)でなければなりません.
V1V2が共に数値,あるいは共に文字列であり,それぞれ,=,≠,<,≦,>,≧の場合に成功し,それ以外の場合は失敗します.

単一化を行う述語

equal(V1, V2)
V1V2を単一化します. 以下の定義と同値です.
equal(_V1, _V1).
nequal(V1, V2)
V1V2が単一化できれば失敗,できなければ成功します. equalの否定で,以下の定義と同値です.
nequal(_V1, _V2) :- not(equal(_V1, _V2)).
is(V1, V2)
V2を評価し,V1と単一化します. V2は評価可能(数値,文字列,組み込み関数)でなければなりません.

変数が束縛されているかどうかを検査する述語

var(V1)
V1が束縛されていない変数の場合は成功し,それ以外は失敗します.
nonvar(V1)
V1が変数でないか束縛されている変数の場合は成功し,それ以外(束縛されていない変数)の場合は失敗します.

入出力を行う述語

write(V1)
項を文字列化してPoP標準出力(StandardOutプロパティで示される出力ファイル)に出力します.

[Next]組込み関数 [Previous]PoP本体 [Up]リファレンス [Top]