Mik*_*cki 6 tree haskell functional-programming list data-structures
我可能会画一个单词列表,如:
this -> is -> a -> test
Run Code Online (Sandbox Code Playgroud)
然后通过分享,我可以绘制两个列表:
this -> is -> a -> test
^
|
that -> was -> a -> hard
Run Code Online (Sandbox Code Playgroud)
现在,如果我反转箭头,我得到一棵树,以测试为根.这与图/类别理论中的二元性概念相同.因此,我可以将树木和列表视为双重概念.
这是正确/有用的吗?
Rom*_*aka 18
共享和懒惰允许您拥有任意循环结构.例如,在Haskell中的定义
ones = 1 : ones
Run Code Online (Sandbox Code Playgroud)
生成一个由单个顶点(对应于1)和一个循环组成的图形(在图形理论上,而不是编程意义上).通过反转箭头,您将获得相同的结构,并且它不是树(因为它有循环).
所以,在懒惰的语言中并非如此.