list - 是否可以在 Prolog 中编写一个空列表作为差异列表?

标签 list prolog empty-list difference-lists

对于像我这样的 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/

相关文章:

list - Flex4列表项双击事件

R:将函数应用于表并合并结果列表

python - 创建数据框时限制元组列表中的列

recursion - 问题中的递归决策树

python - 派纳空字典

java - 只需要支持随机访问和追加的线程安全列表

prolog - 简单 : how to make the test for a false case?

linux - 配置脚本失败

haskell - 空列表测试中的歧义类型变量

python - 使用正则表达式添加空组