假设我想在我的知识库中添加一条规则。
我知道新规则的名称,参数列表和正文。 例如:
rule name = test_rule
argument list = [X, Y]
body = (write(X), nl, write(Y))
构造的规则应类似于:
test_rule(X, Y):-
write(X),
nl,
write(Y).
我可以通过使用functor,arg和assert的组合来实现。 现在,我们说每个构造规则都必须有一个名为Z的变量作为参数。
以前的规则现在应该是:
(忽略不使用Z的事实,这不是问题)
test_rule(Z, X, Y):-
write(X),
nl,
write(Y).
天真的,我认为一个简单的解决方案可能是通过附加[Z]和[X,Y]来构造一个新的参数列表,但是我不能这样做,因为
append([Z], Arg_List, Result)
给我Z上的一个单例错误。这非常有意义,所以我想更具体的答案是如何在列表中保留变量符号?
序言与Lisp引用运算符等效吗?
有更好的方法吗? (可能是)