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

stream - Prolog 管道部分输入,其余部分由用户输入

我正在编写一个带有输入循环的序言程序。大量输入已预先编写在响应文件中。我将其执行为prolog < response.txt. 响应文件完成后,我希望程序通过键盘用户输入继续。但是,当响应文件完成时,它不会从键盘读取/1,而是继续在无限循环中读取end_of_file作为其输入。

一旦管道到达文件末尾,我希望程序恢复为用户键入的输入。我该怎么做呢?

提前致谢。

0 投票
1 回答
107 浏览

list - 将字符串附加到序言中的列表

我是 Prolog 的新手,我已经有一些问题需要理解,问题是,我正在测试附加控制台引入的一些字符串:

最终总是得到这个输出:

这个数字只是为了让控制台结束要求更多的值,我不知道出了什么问题,提前谢谢你们。

0 投票
1 回答
182 浏览

prolog - 如何在 Prolog 中截断文件长度?

如何在 Prolog 中截断文件长度?

我只set_stream_position/2在 ISO 标准中找到一个谓词。set_stream_length/2但我在主要的 Prolog 系统中找不到谓词。

同样有一个流属性position/1,但我看不到length/1流属性。后者将有助于使用set_stream_length/2.

解决方法是什么?

再见

0 投票
2 回答
459 浏览

prolog - 查看短语/3 翻译的标准方法?

我正在尝试深入研究以下 GNU Prolog 行为:

有没有标准的方法来查看短语/3 的翻译?

根据 ISO DCG 提案 (*),我们需要有一个 expand_term/2。现在我可以用它来检查:

这是否告诉我在我的 test/3 中如何使用短语/3?

(*) ISO/IEC DTR 13211–3:2006
定句语法规则
Klaus Daessler
2012 年 11 月 20 日
http://www.complang.tuwien.ac.at/ulrich/iso-prolog/dcgs/dcgsdin121120.pdf

0 投票
2 回答
552 浏览

prolog - 为什么 gprolog 需要这么多内存?

以下来自 top 命令:

它的 RES 是合理的,但它的大小与 swipl 相比太大了。

操作系统是freebsd 9.0。

真挚地!

0 投票
1 回答
2936 浏览

prolog - 运行prolog脚本时如何使prolog打印查询结果

我是 prolog 的新手,想将所有查询保存在一个文件中,而不是手动输入它们。

我有这些事实facts.pl

在阅读了这个问题的答案后,我想出了以下代码queries.pl

在这里,我想检查是否likes(wallace, cheese)成立,我期望输出类似yesorno但实际输出是likes(wallace, cheese)

我用谷歌搜索了很多并尝试过

X = likes(wallace, cheese), write(X).

X is likes(wallace, cheese), write(X).

X := likes(wallace, cheese), write(X).

但它们都不起作用。

这对你来说可能是一个非常简单的问题,但我不知道如何把事情做好。

顺便说一句,我正在使用 GNU Prolog 1.4.1

0 投票
2 回答
452 浏览

prolog - 使用 prolog 脚本时如何打印统一结果?

我正在使用 prolog 脚本来执行所有查询,代码如下:

问题是,queryAll当我想看到统一结果时,只会打印“是”或“否”:

如何在序言中做到这一点?提前致谢。

0 投票
1 回答
456 浏览

prolog - gprolog 中的错误处理?

为了在一个简单的查询中运行一组查询,我标记了这些查询并使用forall/2它们来调用它们:

所以如果我定义类似的东西query(true).,我就可以yes: true从输出中看到。

这里的问题是query( ... )并不总是存在,当 prolog 找不到任何标记的内容query时,forall/2将失败并导致异常说“error(existence_error(procedure,query/1),forall/2)”

我想处理这个异常,但不想破坏整个控制流。

我知道catch/3会帮助我,但我不知道如何使用它,我的代码是:

但序言说“不能重新定义本机代码过程 catch/3”。有什么我错过的吗?

0 投票
1 回答
578 浏览

prolog - 地图列表错误?

以下使用的 maplist 在 swi-prolog 而不是 gprolog 中工作:

问候!

0 投票
1 回答
125 浏览

gnu-prolog - 为什么 absolute_file_name 不起作用

以下代码适用于 swi-prolog:

gprolog 中似乎没有模块。我怎样才能让它在 gprolog 下工作?

真挚地!