为什么草莓序言会忽略空格

时间:2018-05-21 17:51:17

标签: prolog ide

我正在使用Strawberry Prolog并在我写作时

  state = {
    isLogined  : false,
    redirect: false,
    username: "",
    avatar : '',
    name : '',
    messages : [],
    feeds : [],
    activechat : {},
    currentRoom : '',
  }

它输出没有空格的HelloWorld但是如果我将单引号更改为双引号它输出一切正常为什么呢?为什么这不是其他prolog IDE的问题?还有为什么它们之间有区别?单引号和双引号?

最后,如果没有问题,有人可以推荐一些关于prolog的指南吗?

1 个答案:

答案 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]