Prolog使用看起来像内存位置而不是变量内容的字符串进行应答

Prolog使用看起来像内存位置而不是变量内容的字符串进行应答,prolog,Prolog,我不熟悉prolog。我一直在试图弄清楚为什么我一直得到以下输出: What is your name: |: Jake. Hello, _L142 true. 从以下代码: go:- write('What is your name:'),nl, read(MyNameIs), write('Hello, '),write(MyNameIs),nl. 我以为_L142是要写回我刚才键入的名称,即Jake。read实际上是Prolog术语的解析器,因此它将Jake

我不熟悉prolog。我一直在试图弄清楚为什么我一直得到以下输出:

What is your name:
|: Jake.
 Hello, _L142
 true.
从以下代码:

go:-
    write('What is your name:'),nl,
    read(MyNameIs),
    write('Hello, '),write(MyNameIs),nl.

我以为_L142是要写回我刚才键入的名称,即Jake。

read
实际上是Prolog术语的解析器,因此它将
Jake
(大写!)视为Prolog变量。这与一个新的内部变量
\u L142
相统一,并依次打印


要么用小写字母键入您的姓名,单引号引用,要么使用另一种I/O机制而不是
read

aaaaahh,对。谢谢,这很有道理。因此,我应该始终使用Atom或引用字符串。