我是Prolog的新手,我很难使用动态谓词。
首先,这是我正在执行的代码
:- dynamic(list/1).
add(X, LL) :- asserta(list([])), asserta(list(X)), retract(list(LL)).
我知道代码看起来很奇怪,但我只是在寻找合适的语法。
现在,如果我这样做:
add(2,LL)。
答案是:
LL = 2;
LL = []。
但我想要做的是将X(2)添加到数组([])中。所以..
LL = [2]。
它看起来很简单(可能是),但我无法让它发挥作用。
非常感谢。
答案 0 :(得分:0)
如果您想将X
添加到列表的前面:
add(X, LL) :-
( retract(list(Prev))
-> LL = [X|Prev]
; LL = [X]
),
asserta(list(LL)).
但我同意@ jschimpf的建议。断言/收回只应在某些情况下使用,因为在某些应用中可能非常有效。