sitelogo
call, execute
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.

call(+ゴール) call(+ゴール名,+引数リスト) execute(+ゴール) execute(+ゴール名,+引数リスト)

「ゴ−ル」は、ゴ−ルとして解釈することのできる項でなければなりません。

call/1は、「ゴ−ル」を証明、あるいは満たそうとする試みが成功した場合に成功します。call(ゴ−ル)を呼び出す代わりに、ゴ−ルとして引数「ゴ−ル」自身を書いてもかまいません。つまり、call/1の実体は「ゴ−ル」によってそのまま置き換えられます。call/1は透明だということです。「ゴ−ル」におけるカットは、call/1のレベルに影響を与えます。

execute/1は、サブゴ−ルとして「ゴ−ル」を証明、あるいは満たそうとする試みが成功した場合に成功します。この点はcall/1と違うことに注意して下さい。つまり、「ゴ−ル」におけるカットはサブゴ−ルとして実行され、execute/1のレベルでの選択点に影響を与えません。not/1は、execute /1を使うことに注意して下さい。

「ゴール名」はアトムでなければならず、「引数リスト」は引数のリストでなければなりません。

call/2はいくつかの部分から述語をつくり、それをただちに呼び出す場合に便利です。これは以下の定義と同等ですが、より効率的に実現されています。

?- X = (!,fail), write(test1), call(X) ; write(test2). test1 no ?- X = (!,fail), write(test1), execute(X) ; write(test2). test1test2 X = _636 yes ?- Z = member(A,[U,v,W]), U = uuu, Z. Z = member(uuu,v,_664) A = uuu U = uuu W = _664 yes ?- _

execute/2は、call/2と等価なものとして定義されています。

値を持たない変数を関数子として使うこと、例えば"P(X,Y)"などの使用はIF/Prologでは許されていません。

call(GoalName,ArgList):- Goal = ..[GoalName|ArgList], call(Goal).

undefined_predicate ゴールが定義されていない illegal_predicate ゴールが値を持っていない


Up read on...
scroll to top managed with ubiCMS