问题 prolog - 打印变量的值


我只是无法弄清楚如何打印的价值 X。这是我在顶层尝试的:

59 ?- read(X).
|: 2.
X = 2.

60 ?- write(X).
_G253
true.

什么是 _G253?我不想要索引号,我想要X值绑定。 我该怎么做才能打印出来的价值 X


6228
2017-10-16 20:37


起源

可能重复 SWI Prolog中的变量名称 - false


答案:


当你输入 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的正常语义。


14
2017-10-17 17:03





prolog - 作为输入并打印变量的值。

go:- write('Enter a name'),nl,
  read(Name),nl,
  print(Name).
print(Name):- write(Name),write(', Hello !!!').

1
2018-02-12 09:33