我正在使用Strawberry Prolog并在我写作时
state = {
isLogined : false,
redirect: false,
username: "",
avatar : '',
name : '',
messages : [],
feeds : [],
activechat : {},
currentRoom : '',
}
它输出没有空格的HelloWorld但是如果我将单引号更改为双引号它输出一切正常为什么呢?为什么这不是其他prolog IDE的问题?还有为什么它们之间有区别?单引号和双引号?
最后,如果没有问题,有人可以推荐一些关于prolog的指南吗?
答案 0 :(得分:2)
一个好的检查点,对于Prolog系统应该做什么,总是GNU Prolog(对于某些问题version 1.3.0甚至更好)。它非常接近ISO核心标准,并没有很多新奇事物。所以你应该得到一些东西:
GNU Prolog 1.4.4 (64 bits)
Compiled Apr 23 2013, 16:05:07 with cl
?- write('Hello World'), nl.
Hello World
yes
?- write("Hello World"), nl.
[72,101,108,108,111,32,87,111,114,108,100]
说明1单引号:
write / 1谓词应该写 原子没有引用。这意味着通常需要引用的原子 没有引号的。如果您想显示引号,可以使用 writeq在/ 1。原子是单引号。
说明2双引号:
传统上使用双引号 表示字符代码列表,以便人们可以轻松定义DCG 规则。很多Prolog系统都转移到这里,甚至是ISO核心 标准允许字符原子代替代码。
但通常你可以问Prolog系统用双引号做什么,甚至修改行为。只需使用Prolog标志double_quotes。以下是您在GNU-Prolog中可以做的事情:
?- current_prolog_flag(double_quotes, X).
X = codes
?- set_prolog_flag(double_quotes, chars).
yes
?- write("Hello World"), nl.
[H,e,l,l,o, ,W,o,r,l,d]