问题标签 [sicstus-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 回答
88 浏览

prolog - SICStus Prolog:受 JIT 影响的统计信息/2 个值

更新:正如@PerMildner 所报告的,以下问题(存在于 SICStus Prolog 4.3. 2中)已随着新的 SICStus Prolog 4.3 消失。3好样的!


我正在使用 SICStus Prolog 4.3.2,并且我正在了解一些我以前没有使用过的键......这是我的代码: statistics/2

call_keys_deltas/3收集有关谓词执行的一些信息,例如:

我期待有两个选择点?- boolsA([0,0]).——但没有?- boolsB([0,0]).

JIT 运行后立即得到的数字与运行完成后得到的数字不同:

  • 使用 JIT

    /li>
  • 没有JIT

    /li>

我想知道上述差异是否是故意的......感谢您的帮助!

0 投票
1 回答
72 浏览

cmd - 如何使用 spld SICStus 将版本信息添加到构建 .exe 文件

我有以下用于构建我的 Prolog 程序的批处理程序。

VERSION 变量从用户那里读取,并作为标志发送到 build_program.pl 执行此操作:

基本上它会构建 .sav 文件,然后 spld 使用该文件来构建 .exe 文件。

我想将元数据添加到构建 .exe 中,我知道 wjen 使用 c++ 你必须添加一个资源文件,所以我尝试了这个..

其中 VERSIONINFO.rc 是:

但是在运行 spld 时出现以下错误

cl:命令行警告 D9024:无法识别的源文件类型“VERSIONINFO.rc”,假定为目标文件 VERSIONINFO.rc:致命错误 LNK1136:文件无效或损坏

0 投票
1 回答
160 浏览

unix - 在 sicstus-prolog 中将注释字符串转换为 ASCII 字符列表

目前我正在研究 SICStus3 和 SICStus4 之间的比较,但我遇到了一个问题,即 SICStus4 不会参考注释字符串具有回车控件或制表符等的任何情况,如下所示。

下面给出的示例案例。它有 3 个带逗号分隔符的参数。

以下谓词将在上述情况下删除评论部分。

现在我的要求是将注释字符串转换为 ASCII 字符列表。

0 投票
1 回答
134 浏览

prolog - Prolog:测试是否设置了位

我使用任意精度的整数来表示密集的位向量——大小从十几个到几千不等。

我的代码经常需要检查是否设置了某些位(或未设置),因此我做了一些微基准测试,以查看某些变化是否明显快于其他变化:

对于 SWI 和 SICStus,上述变体都(几乎)同样快。

然后我偶然发现了 SWI-Prolog 手册中以下有趣的部分

getbit(+IntExprV, +IntExprI)

计算为 的第 - 位的位值(01)。两个参数都必须计算为非负整数。结果等效于,但更有效,因为避免了移位值的具体化。IntExprIIntExprV(IntExprV >> IntExprI)/\1

未来的版本将优化(IntExprV >> IntExprI)/\1对 的调用getbit/2,同时提供可移植性和性能。

所以我检查了getbit/2

我使用以下代码进行微基准测试:

随着run(runtime, 10000000, 1<<1000-1, 200)我观察这些运行时:

看起来:

  • getbit/2给 SWI-Prolog 500% 的加速

  • 命令行选项-O为 SWI-Prolog 带来了显着的加速。

是否有更好的公式(arith. fun.等)来获得与 SICStus 类似的加速?

先感谢您!

0 投票
1 回答
64 浏览

prolog - 替代 SICStus Prolog FFI SP_define_c_predicate()

0 投票
1 回答
64 浏览

prolog - SICStus Prolog 忽略更改

我对序言很陌生。使用 SICStus,当我对已查阅过的文件进行更改时,SICStus 无法识别这些更改。唯一的方法是我关闭窗口并重新启动它。但显然这是不切实际的,因为每次更改文件时都关闭窗口不仅烦人而且浪费时间。我正在使用 Windows 版本的 Sicstus 4.2.1。到目前为止,我已经尝试过命令consult(file)、reconsult(file)、compile(file),但没有一个有所作为。SICStus 只是忽略所做的更改,直到我关闭并打开窗口。

比如说,我有谓词 test/2。然后我删除了它并保存了文件。然后我输入 reconsult(file)。我的期望是 SICStus 会识别所做的更改并说谓词不存在。但它继续存在,就好像它存在一样。只有在我关闭窗口并重新开始之后,它才会正确地抱怨谓词不存在。

奇怪的是,它使用 reconsult(file) 识别新添加的谓词,但如果它被更改或删除,它不会。

0 投票
1 回答
287 浏览

prolog - SICStus Prolog:查找所有解决方案

有没有一种方法可以显示所有解决方案和/或找到 SICTus prolog 中有多少?例如,下面的代码可能用于解决地图着色问题。

目前,我;每次都在打字以查看进一步的解决方案,直到 Prolog 拒绝。有没有一种方法可以告诉 prolog 一次显示所有解决方案,或者更好的是,我可以找到有多少解决方案。就像 prolog 告诉我的,这个问题有五个解决方案。

0 投票
1 回答
174 浏览

prolog - 相当于 SWIProlog 中 SICStus 的 nvalue/2

CLP(FD) 库的SICStus手册说:

nvalue(?N, +Variables)其中Variables是具有有限边界或整数的域变量列表,N是整数或域变量。如果N是 所采用的不同值的数量,则为 真Variables

当想要最小化解决方案中不同值的数量时,这一点特别有用。例如,如果有人试图将物品分配到不同尺寸的袋子中,并希望尽量减少袋子的数量。

在 SWI Prolog 中是否有等效的谓词(或方法)来实现相同的效果?

0 投票
1 回答
176 浏览

prolog - 考虑到子术语,如何在 Prolog 中比较两个列表?

我想比较两个列表,同时考虑和比较它们的每一个子项。例如,如果我有列表[1, t1(2, t2(3), 4)]and [1, t1(2, t2(2), 4)],结果应该是第一个大于 ( >) 比第二个更大,因为3 > 2在 terms t2(这是 term 的一部分t1)。
我想到了这样的事情:

所以输入是两个列表,输出是一个数学符号,表示它们之间的关系。
也许我的问题有点混乱,但这可以以某种方式完成吗?

编辑:
对不起,我忘了提到我想在算术上比较数字,按标准顺序比较所有其他术语。这就是为什么我有点卡住了。

0 投票
1 回答
100 浏览

sicstus-prolog - 使用 SPIDER IDE 在 SICStus 中编译 Prolog 时出错

我刚刚为 Eclipse 安装了 SICStus Prolog 和 SPIDER IDE 插件。SPIDER 是使用更新站点安装的,我在首选项中设置了 SICStus 安装路径并进行了验证。然后我创建了一个新的工作区和一个仅包含以下文件的 Prolog 项目test.pl

当我编译(菜单:SICStus > 编译 Prolog 代码)时,我在“Toplevel”窗口中收到以下消息:

我的版本号是:

  • macOS 10.12.5
  • Java SE 1.8.0_65
  • 日食 4.6.0
  • SICStus 4.0.8
  • 蜘蛛 0.0.64

SICStus 安装是预先构建的安装。

我从未与 SICStus 合作过,因此我们将不胜感激。