我想为变量赋值,两者都由我的解析器在列表中给出。所以基本上当我得到[x, =, 2]
时,我想将2
的值分配给x
。
我正在尝试做这样的事情,但它不断弹出false
:
assign_value(E, R) :-
\+ find(=, E, _),
R = E.
assign_value(E, R) :-
find(=, E, R1),
I1 is R1-1,
I2 is R1+1,
I3 is R1+2,
nth0(I1, E, P1),
nth0(I2, E, P2),
P1 is P2,
Result is P1,
length(E, Length),
extract(E, 0, I1, ListBefore),
extract(E, I3, Length, ListAfter),
append(ListBefore, [Result], Initial),
append(Initial, ListAfter, Final),
assign_value(Final, R).
有人可以帮忙吗?我有点困惑,因为我是Prolog的新手。