割り当ての場合、プロローグ プロシージャ本体を動的に生成する必要があります。これどうやってするの?
4 に答える
2
関連する述語の swi プロローグ マニュアルの説明については、こちらを参照してください。
例として、次のことを考えてみましょう
goal :- Z =.. [foo, 1],
Y =.. [bar,2],
X =.. [',', Z, Y],
R =.. [':-', r, X],
assert(Z), assert(Y), assert(X), assert(R).
PS: 別の可能性は下位クラスですが、より良い選択になる場合もあります。構築する必要があるものをファイルに出力するだけです。
于 2011-05-10T13:18:05.233 に答える
0
assert/1、asserta/1、retract/1、retractAll/1、廃止/1
于 2011-05-10T12:25:40.340 に答える
0
述語を追加するには、asserta/1 または assertz/1 を使用する必要があります (assert/1 は非推奨です) 。ロードしたコードで述語の句の一部を既に宣言している 場合は、dynamic/ を使用して述語を動的として定義する必要があります。もう1つ
句の形成は、入力の形式に依存します。述語の名前と引数のリストがある場合は、=../2を使用できます。 文字列に句がある場合は、term_to_atom/2を使用できます(両方の方法で機能します) 。
于 2011-05-10T12:34:35.920 に答える