25得票3回答
SWI-Prolog在语义Web中的应用

我希望能听到有实际编程经验的人使用SWI-Prolog语义库的经验。 编辑:我提出这个问题的原因是,在与许多拥有Prolog经验的人交谈中,他们中的大多数似乎在他们的学术项目中将其用于一些人工智能编程。我想知道是否有人在生产环境中广泛使用它。因为实时可维护性和性能不同于完成项目以获得好成绩。 ...

11得票4回答
有没有一个可以绘制Prolog查询搜索树的程序?

我想知道是否存在一种工具,可以绘制Prolog程序的逐步搜索树?谢谢。

12得票2回答
Prolog:编写一个打印“Hello World”的过程

我想将这个简单的东西加载到我的编辑器中:Write:-repeat,write("hi"),nl,fail. 怎样才能使它打印“hi”? 我目前正在尝试进行文件->新建操作 并将文件保存在E:\Program Files\pl\xpce\prolog\lib中命名为Write 执行...

8得票5回答
SWI-Prolog如何显示完整答案(列表)?

我正在尝试将一个字符串转换为ASCII码列表,如下所示: 7 ?- string_to_list("I'm a big blue banana in space!", C). C = [73, 39, 109, 32, 97, 32, 98, 105, 103|...]. 8 ?- ...

10得票4回答
Prolog - 使用DCGs处理二进制数据

在我看来,使用DCGs处理字节列表中的二进制数据应该是可行的。然而为了使其通用,必须使用位运算符,这意味着需要使用 is/2,这也意味着实例化顺序是一个问题,这可能会使DCGs在解析和生成时变得混乱。这里的想法是序列化/反序列化二进制数据,但我认为这个示例足够简单,可以说明问题。 让我用一些...

8得票5回答
流推理/反应式编程在Prolog中的应用?

我想知道是否有任何方法可以使用Prolog进行流处理,也就是说,一种响应式编程方式,或者至少让查询在不断更新(有效地成为一个流)的知识库上运行,并持续输出推理结果? 是否有任何在流行的“Prologs”(如SWI-Prolog)中实现的方法?

8得票1回答
Prolog延迟评估:LIFO或FIFO唤醒?

许多Prolog系统都有一个freeze/2谓词,这个谓词可能应该被命名为geler/2,因为它甚至在Prolog-II之前就被发明了。 假设我有一个关于同一变量的条件,但是有两个不同的目标,即: ?- freeze(X, G1), freeze(X, G2), X=1. 什么是首选...

8得票2回答
在SWI-Prolog中编写宏

我正在尝试在 SWI-Prolog 实现一个简单的 switch 语句宏。 这是一系列条件语句: (X = a -> Output = case1; X = b -> Output = case2; X = c -> Output = case3)...

7得票4回答
SWI-prolog - 如何使用键盘快捷键或全局谓词清空终端屏幕?

我希望在SWI-prolog控制台内使用键盘快捷键或命令(我猜在Prolog中称之为“predicate”)清除屏幕。 这里 是类似的问题,我在其中找到了适合我的谓词: write('\33\[2J'). 有没有更好(更简单)的清屏方式?

7得票3回答
Prolog列表成员,返回多个结果

我有一个确定列表成员的标准流程: member(X, [X|_]). member(X, [_|T]) :- member(X, T). 我不理解的是,当我提出以下查询时: ?- member(a,[a,b]). 结果是。 True; False. 我本以为当第一个规...