我无法弄清楚这是哪里出了问题。请注意,我对 Prolog 非常陌生,我确定我遗漏了一些东西 - 只是不知道那可能是什么。有人可以帮我吗?
谢谢,这是我的代码:
printSentence([]).
printSentence([W|[]]) :-
write(W),
write('.'),
nl.
printSentence([W|R]) :-
write(W),
write(' '),
printSentence(R).
transform([], Result).
transform([Word|Rest], Result) :-
replace(Word, Replacement),
append(Result, Replacement, NewResult),
transform(Rest, NewResult).
replace(my, your).
replace(i, you).
replace(you, me).
replace(am, are).
replace(Word, Word).
test :-
X = [you, are, my, only, hope],
transform(X, Result),
printSentence(Result).
最佳答案
这应该有效。请注意,您在 transform([],Result)
中有一个单例。此外, append 无法按照您尝试使用它的方式工作,但您通常走在正确的轨道上。
transform([], []).
transform([Word|Rest], [Replacement|RestOfResult]) :-
replace(Word, Replacement),
transform(Rest, RestOfResult).
关于prolog - 转换一个句子会产生一个无限循环——但如何转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870187/