empty
リスト2の要素をリスト1に含まれている場合に呼び出されるアトムに置き換えるために、いくつかのPrologを作成しました。
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
結果のリストにが含まれているのはなぜですか?