質問

ユーザーの入力を受け入れたいです [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.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top