对于像我这样的 Prolog 初学者来说,空列表是……奇怪的。我会说不可能将空列表 []
写成差异列表 T1-T2
就像不可能将原子写成差异列表。但是,我猜想要使用递归,必须有一种方法可以在差异列表设置中使用 []
。我用 Google 搜索过这个问题,但找不到答案,而 Bratko(Prolog Programming for AI)只是简要地涉及了这个主题。
那么,是否可以在 Prolog 中编写一个空列表作为差异列表,如果是这样,它如何以及何时有用?
最佳答案
理解这个主题的问题通常是由于使用了误导性的术语。
按照 tutorial.pdf 中的建议特别是pap95.pdf ,例如使用列表差异或简单地差异。
Teaching beginners Prolog 的第 5 节包含相关原因。
空列表由 atom []
唯一表示。
请注意,列表差异总是意味着对两个列表进行推理,并且由于单个列表和多个列表之间的这种分类差异,您最多可以找到一些对应或类比,但不能空列表和列表差异之间的身份。
我完全支持上述论文中表达的观点,即您应该专注于使用 DCG,至少一开始是这样。稍后您会自然而然地对差异进行推理。
关于list - 是否可以在 Prolog 中编写一个空列表作为差异列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41591498/