我写了一些 Prolog 来用一个原子替换列表二中的元素,empty
如果它们包含在列表一中:
replace_build([], _Inv, _Res).
replace_build([A| B], Inv, Res) :-
replace_build2(A, Inv, Res), replace_build(B, Inv, Res).
replace_build2(_BuildItem, [], _NewInv) :- !.
replace_build2(BuildItem, [BuildItem| T], NewInv) :-
replace_build2(BuildItem, T, NewInv1),
append([empty], NewInv1, NewInv).
replace_build2(BuildItem, [H| T], NewInv) :-
replace_build2(BuildItem, T, NewInv1),
append([H], NewInv1, NewInv).
但是,当我运行它时,根据以下示例,我得到一个不寻常的匿名变量(这是正确的术语吗?):
?- replace_build([item3], [empty, item5, item1, item3, empty], X).
X = [empty, item5, item1, empty, empty|_G467]
(它也满足了我不想要的,尽管希望我能解决这个问题!)
为什么|_G467
在结果列表中?