gpt4 book ai didi

if-statement - Prolog 中的正确流程控制,而不使用非声明性 if-then-else 语法

转载 作者:行者123 更新时间:2023-12-04 05:08:13 25 4
gpt4 key购买 nike

我想检查一个任意的事实,如果它在知识库中,则做一些事情,如果不在,则做其他事情,但没有 ( I -> T ; E)句法。

我的知识库中有一些事实:

unexplored(1,1).
unexplored(2,1).
safe(1,1).

给定一个不完整的规则
foo:- safe(A,B),
% do something if unexplored(A,B) is in the knowledge base
% do something else if unexplored(A,B) is not in the knowledge base

处理这个问题的正确方法是什么,而不是这样做?
foo:-
safe(A,B),
( unexplored(A,B) -> something ; something_else ).

最佳答案

不是答案,但评论太长了。

“流量控制”根据定义不是声明性的。在运行时更改谓词数据库(定义的规则和事实)也不是声明性的:它为您的程序引入了状态。

您真的应该非常仔细地考虑您的“数据”是否属于数据库,或者您是否可以将其保留为数据结构。但是你的问题没有提供足够的细节来提出任何建议。

但是你可以看到 this example of finding paths through a maze .在此解决方案中,数据库包含有关未更改的问题的信息。搜索本身使用最简单的数据结构,一个列表。如果你想称之为“流量控制”,这是隐含的:它只是 Prolog 寻找证明的副作用。更重要的是,您可以在不考虑确切控制流的情况下讨论程序及其功能(但您确实考虑了 Prolog 的解析策略)。

关于if-statement - Prolog 中的正确流程控制,而不使用非声明性 if-then-else 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36097420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com