如何才能替换列表中的第一个元素?
我有这个例子:
replace(_,_,[],[]).
replace('-', NewChar, ['-'|T], [NewChar|T2]):- replace('-', NewChar, T, T2).
replace('-', NewChar, [H|T], [H|T2]):- H \= '-', replace('-', NewChar, T, T2).
结果是:
?- replace(-,o,[x,x,x,-,-,-],X).
X = [x, x, x, o, o, o].
但应该是:
X = [x, x, x, o, -, -].
非常感谢。
答案 0 :(得分:0)
出于教学目的,制作 - 并因此调试 - 这样的基本实用程序谓词是一种很好的做法。一旦你掌握了基础,考虑一下瑞士军刀'列表处理 - 追加/ 3。
replace_first(OldEl, NewEl, OldList, NewList) :-
append(H, [OldEl|T], OldList),
append(H, [NewEl|T], NewList).
我认为最明显的关系方法最适合Prolog。
答案 1 :(得分:0)