过去一周开始学习prolog,并且在这个特殊情况下如何分配变量时遇到问题,因为它是一个包含列表中一个元素的列表。
?- X = [[13]].
X = ["\r"]
为什么prolog会分配[" \ r"]?可以做什么,以便分配实际值?
答案 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'a
与97
相同。所以,上面的X
是回车的数值,它是13,以十六进制为0xD
。