【问题标题】:Prolog: Graph representation of list and difference listProlog:列表和差异列表的图形表示
【发布时间】:2014-10-23 11:05:13
【问题描述】:

我一直试图了解列表和差异列表在图形结构中的外观。我了解 [a1,a2,a3,..an|[]] 等列表的基本结构。

但我无法理解差异列表的外观?

例如 [1,2,3,4]-[3,4]

【问题讨论】:

    标签: list prolog difference-lists


    【解决方案1】:

    X-Y 是术语-(X, Y)。所以[1,2,3,4]-[3,4] 主要只是一对两个列表,每个列表都可以像您显示的那样轻松显示在树中。

    现在考虑一个[E1,E2,...,E_n|Rest] 形式的列表,也就是说,最后的尾部还没有被实例化。同样,您可以很容易地在树中显示它,就像您展示的那样,只需将 end-of-list (无论如何都是错误的,因为它实际上应该是原子 nil:[])替换为 Rest

    现在的想法是始终跟踪尚未实例化的尾部,这是一个单一的逻辑变量。通过再次实例化这个变量到一个列表,它的尾部还没有被实例化并且你再次单独跟踪它的尾部,你总是可以附加更多的元素,在时间上独立于原始列表已经达到的长度 em>。

    您可以将这样的列表及其最终尾部表示为 [E1,E2,...,E_n|Rest]-Rest 对,但实际上最好使用两个不同的参数并将列表及其未实例化的最终尾部作为两个单独的参数 (explanation) 传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多