如何从用户输入断言新规则(PROLOG)

时间:2011-11-30 12:40:12

标签: input prolog rule fact prolog-assert

我想接受用户的输入,即[garfield, hates, blacky]hates/2目前不存在。

在我的数据库中,

process:-
    read(Input_List),
    add_rule(Input_List).

add_rule([X, Predicate, Y]):-
    assertz(Predicate(X, Y)).

但这不起作用。是否可以使用变量作为谓词和事实? 或者还有其他方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:4)

您可以使用名为univ operator(=..)/2运算符:

add_rule(X, Predicate, Y) :-
    Fact =.. [Predicate, X, Y],
    assertz(Fact).

用法:

?- add_rule(garfield, hates, blacky).
true.

?- hates(garfield, blacky).
true.