我可能会画一些单词列表:
this -> is -> a -> test
然后通过分享,我可以绘制两个列表:
this -> is -> a -> test
^
|
that -> was -> a -> hard
现在,如果我反转箭头,我得到一棵树,以测试为根。这与图/类别理论中的二元性概念相同。因此,我可以将树木和列表视为双重概念。
这是正确/有用吗?
答案 0 :(得分:18)
分享和懒惰允许您拥有任意循环结构。例如,在Haskell中定义
ones = 1 : ones
生成一个由单个顶点(对应于1)和一个循环(在图论中,而不是编程意义上)组成的图。通过反转箭头,你会得到相同的结构,它不是一棵树(因为它有循环)。
所以,懒惰的语言并不是这样。