Doo*_*Doo 14 variables prolog return-value
我只是无法弄清楚如何打印的价值X.这是我在顶级尝试的内容:
59 ?- read(X).
|: 2.
X = 2.
60 ?- write(X).
_G253
true.
Run Code Online (Sandbox Code Playgroud)
什么是_G253?我不想索引号,我想要X值绑定.我该怎么做才能打印出价值X?
C. *_*een 17
当您write(X).在交互式提示符处键入时,没有其他内容,X不会特别绑定到任何内容.如果要从用户读取X然后写入,请尝试read(X), write(X).在提示符下键入.
?- read(X), write(X).
|: 28.
28
X = 28.
Run Code Online (Sandbox Code Playgroud)
SWI Prolog确实保留了顶级绑定的历史; 输入help.手册,然后搜索bindings或只导航到手册第2.8节"重复使用顶级绑定".在那里,您可以了解到成功的顶级目标中绑定的任何变量的最新值都会被保留,并且可以使用变量名称来引用,前缀为美元符号.因此,以下交互是可能的:
?- read(X).
|: 42.
X = 42.
?- write($X).
42
true.
Run Code Online (Sandbox Code Playgroud)
但恰好使用变量名X的顶级目标将被解释为使用新变量; 否则会违反Prolog的正常语义.