我们可以将不可变列表视为树的对偶吗?
Posted
技术标签:
【中文标题】我们可以将不可变列表视为树的对偶吗?【英文标题】: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 的问题。 【参考方案1】:共享和懒惰允许你拥有任意的循环结构。例如,在 Haskell 中的定义
ones = 1 : ones
生成一个由单个顶点(对应于 1)和一个循环(在图论上,而不是编程意义上)组成的图。通过反转箭头,你会得到相同的结构,而且它不是一棵树(因为它有循环)。
所以,在惰性语言中它是不正确的。
【讨论】:
确实如此。它被称为“图形缩减”是有原因的。以上是关于我们可以将不可变列表视为树的对偶吗?的主要内容,如果未能解决你的问题,请参考以下文章