我无法弄清楚如何打印X
的值。这是我在顶层尝试的内容:
59 ?- read(X).
|: 2.
X = 2.
60 ?- write(X).
_G253
true.
什么是_G253
?我不想索引号,我想要X值绑定。
我应该怎么做才能打印X
的价值?
答案 0 :(得分:16)
当您在交互式提示符下键入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的正常语义。
答案 1 :(得分:2)
prolog - 作为输入并打印变量的值。
go:- write('Enter a name'),nl,
read(Name),nl,
print(Name).
print(Name):- write(Name),write(', Hello !!!').