Prolog 在读写命令中给出随机数而不是字符串
say_hi:-
write('Your name? '),
read(X),
write('hi'),
write(X).
这是我的代码但是!!! 当我运行它时就会发生这种情况。为什么?
?- say_hi.
Your name? Ali.
hi_884
true.
这不是给予
> hi Ali
。为什么?
请指导我并给我简单的代码来读取和写入名称。 每次输入不同的名称都会给出不同的数字。
say_hi:-
write('Your name? '),
read(X),
write('hi'),
write(X).
THIS IS MY CODE BUT!!!
THIS HAPPEN WHEN I RUN IT. WHY?
?- say_hi.
Your name? Ali.
hi_884
true.
It's not giving
> hi Ali
. WHY?
please guide me and give me simple code to read and write name.
every time put different name it gives different numbers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
发生这种情况是因为 read/1 旨在解析 Prolog 术语,而以大写字母开头的字母序列是变量。按照惯例,奇怪的
_NNN
输出是Prolog显示未实例化变量的方式。在 SWI-Prolog 中,您可以使用 read_line_to_codes/2 或 read_line_to_string/2 来得到你的绳子。例如This happens because read/1 is meant to parse Prolog terms, and a sequence of letters starting with an uppercase letter is a variable. The strange
_NNN
output is - conventionally - the way Prolog display an uninstantiated variable. In SWI-Prolog you can use read_line_to_codes/2 or read_line_to_string/2 to get your string. For example