在prolog中查询

时间:2011-02-15 04:38:48

标签: prolog

我知道我们可以在运行时动态添加事实,意思是

fact1(+First,+Second).

我可以使用asserta插入。但是我想问一下,我可以在运行时添加仿函数,这意味着最初只有一个事实,如fact1(first,second).,但用户会在运行时插入更多的事实说

fact2(first,second).
fact3(first,second).

这里最初我们不知道要添加多少事实。假设用户将输入为3然后我们必须添加fact1,fact2和fact3。如果用户输入为4,那么我们必须添加四个事实,即fact1,fact2,fact3和fact4。

对此方向的任何建议表示赞赏。感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用谓词atom_concat / 3和= .. / 2构建断言的事实 这是一个使用这些来根据需要断言谓词的示例(基本名称,数字和两个参数):

assert_predicate(Name, N, Parm1, Parm2):-
  atom_concat(Name, N, FactName),
  Fact=..[FactName, Parm1, Parm2],
  asserta(Fact).

你可以使用类似的东西:   assert_predicate(事实,1,第一,第二)