Prolog分配" \ r"当使用13时

时间:2015-10-11 21:38:02

标签: list prolog

过去一周开始学习prolog,并且在这个特殊情况下如何分配变量时遇到问题,因为它是一个包含列表中一个元素的列表。

?- X = [[13]].
X = ["\r"]

为什么prolog会分配[" \ r"]?可以做什么,以便分配实际值?

1 个答案:

答案 0 :(得分:1)

正是这个"实际值"。它只是在顶层显示不同。

在大多数Prolog中,小整数列表和字符代码列表是相同的。换句话说,这两个[13]"\r"不能分开。因此,当您在列表中放置13时,您的特定Prolog认为您打算列出(ASCII)代码,并且因为13是回车的值,这就是它向您显示的内容。 (这里,用双引号括起来的字符串只是表示小整数列表的另一种方式)。但这实际上取决于实施。这是我的Prolog(SWI-Prolog v7)告诉我的:

?- X = [[13]].
X = [[13]].

为了让您更加困惑,您可以用另一种方式编写上述内容:作为0'符号中的字符代码列表:

?- X = [0'\r], Y = [0'\xd].
X = Y, Y = [13].

(不确定您将看到的内容:请参阅有关此类详细信息的实施文档。)

0'表示法是一种直接获取字符数值的方法:0'a97相同。所以,上面的X是回车的数值,它是13,以十六进制为0xD