prolog - 如何从问题中打印变量值?
问题描述
我正在做一点补充:
sumbit(CIN,A,B,CO,R):- ...
?- sumbit(0
,1
,1
,CO
,R)
,write(CIN),nl
,write(A),nl
,write("+"),nl
,write(B),nl
,write("--"),nl
,write(CO),write(R),nl.
我想要做的是打印 CIN、A、B、CO 和 R 的变量值。它应该是这样的:
0
1
+
1
--
10
相反,它是这样的:
_40
_73
+
_149
--
10
Yes.
还有没有办法不打印“是”?如果有帮助,我正在使用草莓序言。先感谢您
解决方案
在不改变谓词定义的情况下实现这一目标的一种方法是调整查询,如下所示:
?- [CIN, A, B] = [0, 1, 1]
,sumbit(CIN
,A
,B
,CO
,R)
,write(CIN),nl
,write(A),nl
,write("+"),nl
,write(B),nl
,write("--"),nl
,write(CO),write(R),nl.
现在所有变量都被实例化了,要么通过调用本身,要么在调用之前。
当一个变量没有被实例化时,没有要打印的值,所以它的“名称”被打印出来。但是由于未使用的名称本身没有任何意义,因此系统可以将其自由重命名为任何名称。在 SWI 序言中:
1 ?- write(A).
_G1338
true.
作为 Prolog 问题解决过程的一部分,通常会进行重命名,以确保对同一谓词的任何两次单独调用不会相互干扰。
因此,在 SWI Prolog 使用类似 的名称的地方_G1338
,您正在使用的 Prolog 实现显然仅在下划线之后使用带有数字的名称,例如_40
.
推荐阅读
- java - 我的问题是如何根据 PDF 字段名称放置黄色标签
- elasticsearch - 在 ElasticSearch 中,如何检查一个字段是否存在等于某个值,或者该字段不存在?
- r - 如何让闪亮或 flexdashboard 监听外部事件,如文件更改?
- google-chrome-app - 启用离线功能的 chrome 应用程序会自动更新吗?
- emacs - 如何从 emacs 访问 texinfo 文档?
- c# - 使用 LINQ 展平对象的嵌套列表时输出 null 多选
- redis - 单个命令调用中多个 ZRANGEBYSCORE 的 Redis ZINTERSTORE?
- excel - 尝试使用索引/匹配完成 SUM
- java - /bin/sh: 1: 未找到触摸
- python-xarray - xarray.open_mfdataset 用于一小部分变量