kprolog K-Prolog Compiler Version 6.0

以下のものは制御子と呼ばれ、Prolog言語プログラムの動作を意味付ける重要な構文要素です。制御子は組込み述語として使用する事もできます。
\+/1, once/1, repeat/0, forall/2 は制御子ではなく組込み述語です。


true

trueは成功します。

エラー
None


fail

failは失敗します。

エラー
None


call(+Goal)
Goalゴール

ゴールGoalが成功する時、成功します。 Goalが ! を含む場合、! の効果はGoalの外側に伝わりません。

エラー
instantiation_error
type_error(callable,Goal)Goalが変数でも実行可能な項でもありません


forall(+Generate,+Test)
Generate生成部
Test検査部

ゴール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) は このあと後戻りが起きても選択されません。

エラー
None


$

$記号は、それ以後実行されるカットの効果が祖父ゴールまでおよぶことを インタープリタに指示します。$の効果は、その節の中にとどまります。 述語、

      f(X) :- g(X).
      f(X) :- h(X).
と、
      g(X) :- $,!.
      g(X) :- i(X).
で、f(X) を実行すると g(X) の最初の節のカットによって f(X) の代 替節もカットされます。なお、祖父ゴールがすでに$記号を実行していれば、 カットの効果はさらに先祖に波及します。$記号はいくつかのメタ述語で記述 するために用意されました。アプリケーションでは使用しないで下さい。


+First , +Second
First第1ゴール
Second第2ゴール

第1ゴールFirstと第2ゴールSecondが成功する時に限り成功します。

エラー
None



一つ上に戻る 目次に戻る