【发布时间】:2019-01-13 07:07:36
【问题描述】:
在第 32 页的“Prolog by Example: How to Learn, Teach and Use it”一书中:
检查列表的所有元素是否满足某些属性(即一元谓词)。
逻辑程序:
satisfy_property([], _). satisfy_property([X|L], P) :- R=..[P,X],R, satisfy_property(L,P).
beautiful(mary).
beautiful(anne).
beautiful(louise).
执行:
?-satisfy_property([mary, anne, louise], beautiful).
Yes
帮助修改程序逻辑: 如何检查列表中的每个成员?
【问题讨论】:
-
“每个成员”是什么意思。您正在使用您的查询递归所有事实。
-
它应该像这样工作:?-satisfy_property([mary, tom, anne, louise], beautiful)。真的;错误的;真的;真的;
标签: prolog