我想接受用户的输入,即 [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