【问题标题】:Can we think of immutable lists as a dual to trees?我们可以将不可变列表视为树的对偶吗?
【发布时间】:2013-02-28 08:10:35
【问题描述】:

我可能会画一个单词列表,例如:

this -> is -> a -> test

然后通过分享,我可能会画出两个列表:

this -> is -> a -> test
                     ^
                     |
that -> was -> a -> hard

现在,如果我反转箭头,我会得到一棵树,以 test 作为根。这与图/类别理论中的对偶概念相同。因此,我可以将树和列表视为双重概念。

这是正确/有用的吗?

【问题讨论】:

  • 我认为不会,因为这种分享不是自动的。
  • @DanielLyons 这意味着对偶将是一片森林?
  • @didierc 我认为这意味着这个问题并不适用。
  • 实际上,这可能是CS 的问题。

标签: list haskell data-structures tree functional-programming


【解决方案1】:

共享和懒惰允许你拥有任意的循环结构。例如,在 Haskell 中的定义

ones = 1 : ones

生成一个由单个顶点(对应于 1)和一个循环(在图论上,而不是编程意义上)组成的图。通过反转箭头,你会得到相同的结构,而且它不是一棵树(因为它有循环)。

所以,在惰性语言中它是不正确的。

【讨论】:

  • 确实如此。它被称为“图形缩减”是有原因的。
猜你喜欢
  • 1970-01-01
  • 2011-12-05
  • 2019-02-20
  • 1970-01-01
  • 2018-10-30
  • 2018-03-22
  • 2011-09-08
  • 2016-03-24
  • 2017-07-24
相关资源
最近更新 更多