【问题标题】:prolog - print the value of a variableprolog - 打印变量的值
【发布时间】:2018-02-12 17:33:46
【问题描述】:
我只是不知道如何打印X 的值。这是我在顶层尝试过的:
59 ?- read(X).
|: 2.
X = 2.
60 ?- write(X).
_G253
true.
_G253 是什么?我不想要索引号,我想要 X 绑定的值。
我应该怎么做才能打印X 的值?
【问题讨论】:
标签:
variables
prolog
return-value
【解决方案1】:
当您在交互式提示符下键入write(X). 时,X 不会特别绑定到任何东西。如果您想从用户那里读取 X 并写入它,请尝试在提示符处键入 read(X), write(X).。
?- read(X), write(X).
|: 28.
28
X = 28.
SWI Prolog 确实保留了顶级绑定的历史;键入help. 进入手册,然后搜索bindings 或直接导航到手册的第2.8 节“顶层绑定的重用”。在那里,您可以了解到成功的顶级目标中绑定的任何变量的最新值都将被保留,并且可以使用以美元符号为前缀的变量名称来引用。因此可以进行如下交互:
?- read(X).
|: 42.
X = 42.
?- write($X).
42
true.
但是恰好使用变量名 X 的顶级目标将被解释为使用新变量;否则会违反 Prolog 的正常语义。
【解决方案2】:
prolog - 作为输入并打印变量的值。
go:- write('Enter a name'),nl,
read(Name),nl,
print(Name).
print(Name):- write(Name),write(', Hello !!!').