ユーザー入力(PROLOG)から新しいルールを主張する方法
-
26-10-2019 - |
質問
ユーザーの入力を受け入れたいです [garfield, hates, blacky]
.
hates/2
現在存在していません。
私のデータベースでは、
process:-
read(Input_List),
add_rule(Input_List).
add_rule([X, Predicate, Y]):-
assertz(Predicate(X, Y)).
しかし、これはうまくいきません。変数を述語として使用することは可能ですか?それとも、これを達成する他の方法はありますか?
解決
使用できます (=..)/2
オペレーターが呼ばれます 大学オペレーター :
add_rule(X, Predicate, Y) :-
Fact =.. [Predicate, X, Y],
assertz(Fact).
使用法 :
?- add_rule(garfield, hates, blacky).
true.
?- hates(garfield, blacky).
true.
所属していません StackOverflow