对于像我这样的Prolog初学者来说空列表是......很奇怪.我会说,不可能将空列表写[]
为差异列表T1-T2
,因为不可能将原子写为差异列表.但是,我猜想要使用递归,必须有一种方法可以[]
在差异列表设置中使用.我已经谷歌了,但我找不到答案,Bratko(人工智能的Prolog编程)只是简单地触及了这个主题.
那么,是否可以在Prolog中将空列表作为差异列表编写,如果是这样,它将如何以及何时有用?
理解该主题的问题通常是由于使用误导性术语.
正如tutorial.pdf中的建议,特别是pap95.pdf,使用例如列表差异或简单差异.
教学初学者Prolog的第5部分包含相关的原因.
空列表由atom 唯一表示[]
.
请注意,列表差异总是意味着有关两个列表的推理,并且由于单个列表和多个列表之间的这种明显差异,您最多可以找到一些对应关系或类比,但不能在空列表和列表差异之间找到标识.
我完全支持上述论文中表达的观点,即你应该专注于使用DCG,至少在开始时.明确地对差异进行推理将在以后自然而然地发生.