使用失败的切割2024 年 8 月 29 日 | 阅读 2 分钟 在本节中,我们将指定“cut”的另一种用途。它用于指定一般规则的例外情况。在下面的示例中,我们在数据库中包含鸟类的名称,如下所示 以下显示了添加此项的自然规则 上面的规则意味着“所有鸟类都可以飞翔”。 上述规则非常笼统。我们不能保证目标 cry_fly(penguins) 总是失败吗?因此,我们将按照以下方法更改谓词 can_fly 的定义 但是,以上并没有提供期望的结果 第一个 can_fly 子句的头部和目标 can_fly(penguins) 相互匹配。在该子句的主体中,我们尝试满足该目标,而该目标显然失败。现在,系统查看第二个 can_fly 子句。头部和目标相互匹配,并且目标也在子句的主体中得到满足,即 bird(A),因此目标 can_fly(penguins) 成功。但这并不是期望的结果。 我们可以通过替换子句 can_fly 来实现期望的结果,替换为 与之前一样,第一个 can_fly 子句的头部和目标 can_fly(penguins) 相互匹配。在该子句的主体中,我们尝试满足该目标,而该目标显然失败。但在这里,切割会阻止系统回溯,因此目标 can_fly(penguins) 失败。 使用失败的切割是 fail 和目标 ! 的组合。 下一个主题Prolog 中的地图着色 |
我们请求您订阅我们的新闻通讯以获取最新更新。