问题标签 [prolog-toplevel]

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 投票
2 回答
138 浏览

prolog - Prolog没有给出正确答案

我正在学习 Prolog。我写了一些简单的事实。但似乎 Prolog 没有给我正确的答案。请帮助我理解我在这里做错了什么。

facts- 天气.pl

当我在 swi-prolog 中运行它时,如下所示

结果仅显示为pheonix。但la也是warm。为什么没有给出答案?

0 投票
2 回答
138 浏览

prolog - 变量不打印整个值 Prolog

如果我分配类似的东西 process([[baby],[boy],[[is]dancing],[with],[[the][family]]],A),那么它的输出为

我希望它显示终端上的所有值。就像是 A = [[baby],[boy],[[is]dancing],[with],[[the][family]]].

0 投票
1 回答
95 浏览

prolog - 移动到 XSB 或 Ciao (Prolog) 中的上一个查询

在使用 swi-prolog 时,可以使用 UP 箭头键(在终端)调用以前的查询。如何在 XSB 或 Ciao prolog 系统中实现这一点?

0 投票
2 回答
4550 浏览

prolog - Prolog中的“false”和“no”有什么区别

我是按照《Prolog编程:使用 ISO 标准》一书开始学习 Prolog 的 。在语言介绍的第 7 页,他们做出断言:“在 Prolog 中,答案no用于表示没有与问题一致。重要的是要记住nofalse不同”。那么为什么SWI-Prolog使用falseandtrue语句而不是yesorno呢?

0 投票
1 回答
62 浏览

prolog - 获取查询的更多解决方案

我有

但是当我查询

我只得到

我不应该得到另一行说 X = tom 吗?

0 投票
1 回答
85 浏览

io - 在 SWI-Prolog 中,调用 copy_stream_data 时,如何避免出现 '|:' 提示?

我已经cat在 SWI-Prolog 中使用copy_stream_data.

文件args.pl

文件cat.pl

当我使用程序 to catfrom stdinto时,它会在期望输入的地方stdout打印一个提示。我怎样才能避免这个提示?|:stdin

0 投票
1 回答
648 浏览

file-io - 重定向标准输出流

如何将listing/0SWI-Prolog REPL 中的输出写入文件?

0 投票
5 回答
7388 浏览

swi-prolog - SWI-Prolog 如何显示整个答案(列表)?

我正在尝试将字符串转换为 ascii 代码列表,如下所示:

如您所见,这并没有给我整个列表,但我需要它。

此解决方案不起作用:我无法按 w,因为它给了我答案并完全停止。这也没有:我可以调用该函数,它返回 true,但列表仍未完全显示。

任何帮助表示赞赏!

0 投票
2 回答
123 浏览

prolog - Prolog - 查询输出有限的答案

首先 - 这是课程作业,所以我不能发布代码。这更多是关于 prolog 如何输出其答案,而不是“我的代码是否正确”?

我正在创建一个谓词,它返回一个图之间的所有简单路径,给定一个边列表。

例如,paths(a, X)将返回以 . 开头的所有可能路径a

假设我的知识库是:edge(a,b)。边缘(b,c)。边(c,d)。边(d,f)。

然后我应该得到X = [[a], [a,b], [a,b,c], [a,b,c,d], [a,b,c,d,f]]- 我做到了。问题是,如果输出更长,那么它不会显示所有可能的输出 - 输出显示如下:

是的

有什么方法可以让我的解释器明确显示所有内容?最后一个列表不完整 - 它应该显示 [b,c,d,f,g]。作为记录,我正在使用 SICTUS

0 投票
1 回答
203 浏览

prolog - Prolog 回溯策略

SWI-Prolog,版本 6.6.6。

考虑以下事实:

结果如下:

但是如果我稍微改变一下数据:

我得到一个稍微不同的答案......

似乎没有出现第二种情况的回溯,因为问题中谓词的第一个参数没有与其他子句统一。
然而,人们希望true ; false.对每种情况都有答案:引擎将尝试第一个谓词子句(结果为true),然后回溯并寻找相同谓词的其他子句(结果为false)。在第二种情况下,它是一种捷径吗?

这是(有点)标准行为 - 即在编写序言规则时应该考虑 - 还是纯粹是特定于实现的?