1
4
让我们看看有问题的查询会发生什么:
自从
同样,第一条规则不匹配,因为
再一次,第一条规则失败了,第二条规则成功了
现在,在第一条规则中,
因此,Prolog告诉您,确实有一个解决方案:
现在,您可以按询问是否有其他解决方案 ;
Prolog返回到开放选择点并遵循递归规则,直到
|
2
1
作为一个小背景,我们可以考虑一个单链接列表由两个“构造函数”组成:
这里有两个条款。第一个是:
我可能会用不同的方式来描述它
这是因为
现在,让我们花点时间思考一下Prolog如何选择子句。在每一步中,Prolog本质上都在尝试统一。因此,当呈现
现在,通过这个示例,Prolog将尝试将子句的开头统一为
通过第二次调用,您可以看到Prolog现在对查找
但是,在下一次调用时,可以激活第一个子句:
这一次,变量与一些东西统一了。这是因为您的第一个子句是基本情况。现在回顾一下你的定义,你可以看到第二个子句中的第三个参数是
就在这里。 |
Sam · 如何在Swi Prolog中对元组列表排序 6 年前 |
davo · 序言:delete谓词如何提供列表的开头 6 年前 |
Zeph · 在Prolog中添加到列表列表 6 年前 |
Deeps · 在prolog中截断浮点数 6 年前 |
Anthony Gauthier · 分析不同规则中的规则体 6 年前 |
quixote · 如何在swi prolog中删除命令历史记录 6 年前 |
Walker · Prolog比较列表[关闭] 6 年前 |
user7303261 · 在prolog中运行main 6 年前 |
MasterYork42 · Prolog逻辑难题不起作用? 6 年前 |