kprolog K-Prolog Compiler Version 6.0

述語と節

本節では、述語や節を登録、検索したり、消去するための組込み述語を解説します。
assert(@Clause)
Clause節項
assertz(@Clause)
Clause節項
asserta(@Clause)
Clause節項
assert(@Clause,+Position)
Clause節項
Position位置

assert/1,assertz/1は、Clauseを述語の最後に付け加えます。
asserta/1は、Clauseを述語の最初に挿入します。
assert/2は、Clauseを述語のPosition番目の節の後に挿入します。Positionが 0の場合は述語の最初に挿入します。

エラー
instantiation_error
type_error
permission_error(modify,static_procedure,_2340)静的述語を改変しようとした


clause(+Head,?Body)
Head頭部
Body本体部
clause(+Head,?Body,+Position)
Head頭部
Body本体部
Position節の位置

Headは節の頭部の形でなければなりません。
clause/2は、Headがその頭部と単一化可能な節をすべて 後戻りにより1個ずつ探し出し、 Head,Bodyをそれぞれ節の頭部、本体部と単一化します。 節が単位節(本体部がない節)ならば、Bodyはアトム true と単一化します。
clause/3は、述語のPosition番目の節を探し出し、Head,Bodyをそれぞれ節の頭部、本体部と単一化します。

エラー
instantiation_error
type_error
permission_error(access,private_procedure)私的述語にアクセスしようとした


retract(+Clause)
Clause
retract(+Clause,+Position)
Clause
Position節の位置

retract/1は、Clauseの形の節と単一化可能な節をすべて、 後戻りにより1個ずつ探し出し、消去します。 Clauseは消去する節自身と単一化します。消去すべき節がなくなると失敗します。
retract/2は、述語のPosition番目の節を探し出し、消去します。
これらの述語は、assert などと組み合わせて、プログラムの実行中に述語を 変更するために使用します。

エラー
instantiation_error
type_error
permission_error(modify,static_procedure,_2272)静的述語を改変しようとした


abolish(@Pred)
Pred述語指示子
abolish(+Name,+Arity)
Name述語名
Arityアリティ
abolish(+Name,+Arity,+Position)
Name述語名
Arityアリティ
Position節の位置

abplish/1は、述語指示子Predを持つ述語を消去します。
abolish/2は、述語名Name,アリティArityを持つ述語を消去します。
abolish/3は、述語名Name,アリティArityを持つ述語のPosition番目の節を消去します。

エラー
instantiation_error
type_error
representation_error(max_arity)アリティの指定が最大値を超えている
permission_error(modify,static_procedure,_2332)静的述語を改変しようとした


current_predicate(?Pred)
Pred述語指示子
current_predicate(?Name,?Arity)
Name述語名
Arityアリティ

current_predicate/1は、Predに単一化可能な述語指示子を持つ述語を、後戻りにより1個ずつさがし出します。
current_predicate/2は、Nameに単一化可能な述語名、Arityに単一化可能なアリティをも持つ述語を後戻りにより1個ずつさがし出します。
これらの述語は、すべての述語の名前を知りたいときや、特定の名前の述語を調べるときに便利です。

エラー
type_error


predicate_property(@Head,-Prop)
Head頭部
Prop属性

Headと同じ述語指示子をもつ述語について、その属性をPropと単一化します。 属性は、built_in/compiled/interpreted, static/dynamicで複数の属性を返すべき時は後戻りにより1個ずつ返します。


predicate(@Head,-Module,-Status,-Count,-Mode,-File)
Head頭部
Moduleモジュール
Status状態
Count節の数
Modeモード
Fileファイル

頭部がHeadと単一化できる述語について、以下の情報を単一化によって返します。

Module
Pが定義されたモジュール名。
Status
ユーザ定義の述語のとき、Public宣言されていれば public、 されていなければ local、組込み述語のとき builtin、 外部述語のとき extern、コンパイルされているとき compiled。
Count
節の数。
Mode
実効モード宣言。
File
Pが定義されたときのファイル入力のファイル名。 ただし、同名の述語が複数のファイルから読まれたときは不定。

エラー
instantiation_error


builtin(@Head)
Head頭部
extern(@Head)
Head頭部

builtin/1は、Headが組込み述語を呼び出す形のゴールであれば成功し、そうでなければ失敗します。
extern/1は、HeadがC言語インタフェースで定義された外部述語を呼び出す形のゴールであれば成功し、そうでなければ失敗します。


where_is +P
Pアトムまたは文字列で与える名前

名前がPであるかまたは正規表現パターンPと適合する名前の述語がユーザ定義されているモジュール名と読み込まれたファイル名を標準出力に表示します。
この述語は、モジュール境界を超えて働きます。



一つ上に戻る 目次に戻る