2011-05-10 56 views

回答

1

为SWI序言手册说明,请参见here的相关谓词。

例如,考虑以下

goal :- Z =.. [foo, 1], 
    Y =.. [bar,2], 
    X =.. [',', Z, Y], 
    R =.. [':-', r, X], 
    assert(Z), assert(Y), assert(X), assert(R). 

PS:另一种可能性是较低级的,但有时可能是一个更好的选择:刚打印出你需要构建一个文件的内容。

0

断言/ 1,asserta的/ 1,收回/ 1,retractAll/1,取消/ 1

+0

我很不好解释遗憾。我编辑了这个问题。 – onurozcelik 2011-05-10 12:51:56

0

添加你需要使用asserta的/ 1或assertz/1(断言/ 1已被弃用)more谓词 如果你已经宣布了一些代码谓词的条款,你装,你应该使用动态/ 1 more

形成条款取决于输入的形式界定谓词动态。 如果你有谓词和参数的名称列表,你可以使用=../2 如果你有一个字符串的条款,你可以使用term_to_atom/2(两种方式都可以)

+0

我对不好的解释感到抱歉。我编辑了这个问题。 – onurozcelik 2011-05-10 12:50:21

0

您可以生成“(”和“)”封闭体动力学谓词。

assert(test(X):- (X1 is X+1, write(X1)))