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


+Either ; +Or
Either第1ゴール
Or第2ゴール

第1ゴールEitherが '-> 'の時は次の'If->Then;Else'を参照してください。 (Either;Or)は、第1ゴールEitherまたは第2ゴールOrが成功する時に限り成功します。

エラー
None


+If-> +Then ; +Else
If条件
Thenthen分岐
Elseelse分岐

If->Then;Elseは、Ifが成功してThenが成功するか、Ifが失敗して Elseが成功する時に限り成功します。Ifの選択点はIfが最初に 成功した時に取り除かれます。

エラー
None


+If-> +Then
If条件
Thenthen分岐

If->Thenは、Ifが成功してThenが成功する時に限り成功します。 Ifの選択点はIfが最初に成功した時に取り除かれます。

エラー
None


catch(+Goal,+Catcher,+Recovery)
Goalゴール
Catcherキャッチャー
Recoveryリカバリゴール

catch(Goal,Catcher,Recovery) は、call(Goal)が成功するかまたは throw/1により実行が中断されてthrow/1の引数がCatcherに単一化可能でかつ call(Recovery)が成功する時に限り成功します。 throw/1の引数ががCatcherと単一化可能でなければ上位のcatchに処理させます。

エラー
instantiation_error
type_error(callable,Goal)


throw(+Ball)
Ballボール

throw/1は成功も失敗もしません。throw/1は通常の処理の流れを 中断してcall/3に制御を戻す為に存在します。

エラー
instantiation_error
system_errorBallに対応するcatch/3を見つけられません


\+ @Goal
Goal呼出し可能項
not @Goal
Goal呼出し可能項

呼出し可能項Goalを実行し、実行が失敗したときに成功します。

エラー
instantiation_error
type_error


once(@Goal)
Goal呼出し可能項

呼出し可能項Goalを実行しますが、Goalの成功後に後戻りが発生しても 再実行しません。

エラー
instantiation_error
type_error


repeat

repeat/0は成功します。その後、後戻りが発生する度に (カットされていなければ)何度でも成功します。



一つ上に戻る 目次に戻る