K-Prolog Compiler Version 6.0

以下のものは制御子と呼ばれ、Prolog言語プログラムの動作を意味付ける重要な構文要素です。制御子は組込み述語として使用する事もできます。
\+/1, once/1, repeat/0, forall/2 は制御子ではなく組込み述語です。
trueは成功します。
エラー
failは失敗します。
エラー
ゴールGoalが成功する時、成功します。
Goalが ! を含む場合、! の効果はGoalの外側に伝わりません。
エラー
| instantiation_error |
| type_error(callable,Goal) | Goalが変数でも実行可能な項でもありません |
ゴールGenerateが生成する解についてゴールTestが必ず成功するとき、
成功します。
\+ (call(Generator), \+ call(Test))
と同じです。
エラー
| instantiation_error |
| type_error(callable,Generate) | Generateが変数でも実行可能な項でもありません |
| type_error(callable,Test) | Testが変数でも実行可能な項でもありません |
! は親ゴールの選択点を取り除き成功します。
f(X) :- g(X),!.
f(X) :- h(X).
が起動されたとき、g(X) が(1回でも)成功して、!が実行されると、
g(X) の中で発生したすべての代替節と、f(X) の代替節 f(X):-h(X) は
このあと後戻りが起きても選択されません。
エラー
$記号は、それ以後実行されるカットの効果が祖父ゴールまでおよぶことを
インタープリタに指示します。$の効果は、その節の中にとどまります。
述語、
f(X) :- g(X).
f(X) :- h(X).
と、
g(X) :- $,!.
g(X) :- i(X).
で、f(X) を実行すると g(X) の最初の節のカットによって f(X) の代
替節もカットされます。なお、祖父ゴールがすでに$記号を実行していれば、
カットの効果はさらに先祖に波及します。$記号はいくつかのメタ述語で記述
するために用意されました。アプリケーションでは使用しないで下さい。
第1ゴールFirstと第2ゴールSecondが成功する時に限り成功します。
エラー
一つ上に戻る
目次に戻る