【发布时间】:2013-03-21 23:26:34
【问题描述】:
我正在编写一个 Prolog 谓词,它接受参数 (A1, A2, L1, L2),如果 L1 中所有出现的 A1 都已更改为 L2 中的 A2,则成功。
即:
| ?- replace(a, b, [a], X).
X = [b]
这是我写的:
replace(Orig,_,[Other],[Other]) :- Other \== Orig.
replace(Orig,Repl,[Orig],[Repl]).
replace(Orig,Repl,[Other|T1],[Other|T2]) :- Other \== Orig, replace(Orig,Repl,T1,T2).
replace(Orig,Repl,[Orig|T1],[Repl|T2]) :- replace(Orig,Repl,T1,T2).
现在,这可行,但似乎有点不雅。有没有更优雅的解决方案?
谢谢。
【问题讨论】:
标签: list replace prolog prolog-dif