问题标签 [swi-prolog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
582 浏览

c++ - 类问题(c++ 和 prolog)

我正在使用 Prolog 的 C++ 接口(SWI-cpp.h 的类和方法)。为了制定一个约翰喜欢玛丽、艾玛和莎拉的简单回溯:

我可以这样做:

这在单独的代码中有效,因此语法是正确的。但我也试图让这个简单的回溯在一个类中工作:

此类工作正常,我的周期变量在每个机器人周期递增。但是,当我运行我的主代码时,我收到了 Unhandled Exception 错误消息:

我有 PlFrame 的左括号和右括号。我有我的框架、我的查询等... 回溯并打印出 mary、emma 和 sara 的完全相同的代码。我在这里错过了什么,我收到一条错误消息?

以下是我认为代码应该做的事情:我希望 mary、emma 和 sara 打印一次,每次循环递增。但是,它会自动打开 SWI-cpp.h 文件并指向 PlFrame 类。它想告诉我什么?我看不出我的 PlFrame 类声明有什么问题。

谢谢,

0 投票
1 回答
91 浏览

visual-studio-2008 - PREDICATE( name, arity )

Suppose I have the program below:

When I compile it, it links Prolog and C++ and then launches the Prolog command prompt.

All I have in myFile.pl is

When I type listing at the Prolog prompt, I get

My question is how do I use the result of some other subroutine, say a class, in my foreign predicate add? Let's say I have a class somewhere in my program that calculates some x and y. Obviously x and y would be private or protected members of that class' header file. How do I use x and y in my add predicate? For instance, if I wanted to return the sum of x and y and first and second arguments of add?

Cheers,

0 投票
2 回答
883 浏览

rdf - SWI-Prolog:如何使用 semweb/rdf_db 库加载 rdf 三元组?

我有一个 n-triples 格式的 rdf 文件(file.trp),其中每一行都是格式正确的三元组:

“主谓宾语。”

我尝试使用 semweb/rdf_db 中的 rdf_load 将其加载到内存中,但失败了。这是我尝试过的:

跟踪显示目标在以下位置失败:

调用

这可能是在外国图书馆中定义的。

手册说它支持 xml 和三元组。但它只加载 rdf xml 文件。如何加载这样的 rdf 三重文件?

谢谢,李

0 投票
2 回答
2066 浏览

php - 从 php 调用 swi-prolog

我正在尝试从 php 脚本中调用 swi-prolog,例如:

我可以看到 prolog 窗口被打开并编译文件,但立即退出并显示退出状态为 1。我确信它没有执行我想要执行的谓词。

是否还有其他方法可以使用适当的参数调用 prolog 并保留窗口open而不自动退出?

更新:我将系统环境变量配置为安装 prolog 的路径。

0 投票
2 回答
12047 浏览

prolog - 为什么这个序言查询既真又假?

我的 SWI-Prolog 知识库包含以下两个事实:

现在,如果我提出查询

为什么 f(a,b) 既真又假?当知识库中有三个事实时,也会发生这种情况。如果我附加 f(a,d)。到 KB,则 f(a,d) 为真(仅),但 f(a,b) 和 f(a,c) 既为真又为假。发生了什么事,我该怎么做才能使 Prolog (仅)回答这些查询?

0 投票
3 回答
10555 浏览

prolog - 如何在 swi-prolog 中拆分句子

我正在尝试在 win xp 中使用 SWI-Prolog。我试图了解如何将 Prolog 中的句子拆分为单独的原子。

例如:假设我有这样一句话:

“这是一个字符串”
有没有办法让单个单词存储在变量中?

喜欢 :

X = 这个
Y = 是
....
等等。

谁能解释一下这是如何工作的?

谢谢。

0 投票
1 回答
488 浏览

ruby - 为编程语言编写包装器

我想写一个 ruby​​ 包装器 swi-prolog。谁能告诉我如何继续写一个?

如果有人请解释我在尝试编写此类时需要考虑哪些步骤,我将不胜感激。

0 投票
1 回答
185 浏览

prolog - (swi)序言的不太像寻呼机

unix 中的典型工作流程是使用过滤器管道,最后使用诸如 less 之类的寻呼机。例如(省略参数)

现在,swi-prolog 命令行中的典型工作流程之一是要求它为给定的连词提供一组解决方案,例如

它很容易给我一套解决方案。这可能比终端窗口长得多。或单个查询

可以再次给出一个很长的列表,不适合屏幕。因此,我经常发现自己处于想|less在排队结束时打耳光的情况。

我正在寻找的是一种在寻呼机中打开一组解决方案或只是一个大术语的工具。类似于:

或者

0 投票
4 回答
5494 浏览

prolog - 如何在 Prolog 中同时返回变量结果和真/假?

听起来很傻,但是可以说我的谓词最大/ 2 返回列表中的最大元素...输出应如下所示:

我实现了最大的,它像上面一样工作,只是它不输出“false”。我该怎么做,所以它也输出这个“假”。价值?这是我必须完成的一项烦人的任务。:(

0 投票
1 回答
1702 浏览

swi-prolog - 如何从 XPCE 中的序言谓词中读取

我有以下简单的序言谓词:

这个想法很清楚,只需在“Out”中返回与在“In”中收到的相同的内容。好的,现在我想在 XPCE 程序中包含这个 prolog 谓词。我创建了一个窗口并添加了一个按钮,该按钮应调用此 prolog 谓词,然后显示“Out”中返回的值。我认为完成这项任务就像

但不幸的是,这并不完全符合我的要求。相反,它现在打印出“Out”的内部引用。例如:

任何想法我的错误是什么?