目标:
过滤掉不以指定字符开头的列表中的所有单词。以指定字符开头的单词应存储在没有第一个字符的新列表中。
问题:
如果允许列表中的所有单词,则按预期工作。当不允许列表中的单词时,检查失败(按预期)但它退出谓词而不尝试继续列表中的下一个单词(不是预期的),如回溯并尝试重做下一个单词。 / p>
filter_word([Char|Rest], Char, Rest).
filter([], _, []).
filter([Word|Words], Char, [H|T]) :-
filter_word(Word, Char, H),
filter(Words, Char, T).
这是一项家庭作业。
答案 0 :(得分:0)
它退出谓词而不尝试继续列表中的下一个单词(不是预期的),如回溯并尝试重做下一个单词。
那是因为filter
中没有条款来处理单词与过滤器不匹配的情况。这个问题有三种情况:
你应该写相应的三个条款。