问题标签 [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.
prolog - Prolog没有给出正确答案
我正在学习 Prolog。我写了一些简单的事实。但似乎 Prolog 没有给我正确的答案。请帮助我理解我在这里做错了什么。
facts
- 天气.pl
当我在 swi-prolog 中运行它时,如下所示
结果仅显示为pheonix
。但la
也是warm
。为什么没有给出答案?
prolog - 变量不打印整个值 Prolog
如果我分配类似的东西
process([[baby],[boy],[[is]dancing],[with],[[the][family]]],A)
,那么它的输出为
我希望它显示终端上的所有值。就像是
A = [[baby],[boy],[[is]dancing],[with],[[the][family]]].
prolog - 移动到 XSB 或 Ciao (Prolog) 中的上一个查询
在使用 swi-prolog 时,可以使用 UP 箭头键(在终端)调用以前的查询。如何在 XSB 或 Ciao prolog 系统中实现这一点?
prolog - Prolog中的“false”和“no”有什么区别
我是按照《Prolog编程:使用 ISO 标准》一书开始学习 Prolog 的 。在语言介绍的第 7 页,他们做出断言:“在 Prolog 中,答案no用于表示没有与问题一致。重要的是要记住no与false不同”。那么为什么SWI-Prolog
使用false
andtrue
语句而不是yes
orno
呢?
prolog - 获取查询的更多解决方案
我有
但是当我查询
我只得到
我不应该得到另一行说 X = tom 吗?
io - 在 SWI-Prolog 中,调用 copy_stream_data 时,如何避免出现 '|:' 提示?
我已经cat
在 SWI-Prolog 中使用copy_stream_data
.
文件args.pl
:
文件cat.pl
:
当我使用程序 to cat
from stdin
to时,它会在期望输入的地方stdout
打印一个提示。我怎样才能避免这个提示?|:
stdin
file-io - 重定向标准输出流
如何将listing/0
SWI-Prolog REPL 中的输出写入文件?
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
prolog - Prolog 回溯策略
SWI-Prolog,版本 6.6.6。
考虑以下事实:
结果如下:
但是如果我稍微改变一下数据:
我得到一个稍微不同的答案......
似乎没有出现第二种情况的回溯,因为问题中谓词的第一个参数没有与其他子句统一。
然而,人们希望true ; false.
对每种情况都有答案:引擎将尝试第一个谓词子句(结果为true
),然后回溯并寻找相同谓词的其他子句(结果为false
)。在第二种情况下,它是一种捷径吗?
这是(有点)标准行为 - 即在编写序言规则时应该考虑 - 还是纯粹是特定于实现的?