我要加一点:
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.
还有没有不打印“是”的方法吗? 如果有帮助,我正在使用草莓序言。 预先谢谢你
答案 0 :(得分:3)
在不更改谓词定义的情况下实现此目标的一种方法是调整查询,如下所示:
?- [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 Prolog中:
1 ?- write(A).
_G1338
true.
作为Prolog问题解决过程的一部分,通常会进行重命名,以确保对相同谓词的任何两个单独的调用都不会相互干扰。
因此,在SWI Prolog使用诸如_G1338
之类的名称的情况下,您正在使用的Prolog实现显然仅使用带下划线的名称,例如_40
。
答案 1 :(得分:0)
我通过将write()放在sumbit(...)谓词中找到了答案:
web: cd client && PORT=3000 npm start
api: PORT=3001 && bundle exec rails s
尽管如此,仍然有一些未解决的问题:
有没有不打印“是”的方法?
之前出现的_number是什么?