2013-03-12 40 views
6

我可能會得出類似的單詞列表:我們可以將不可變列表視爲樹的雙重對象嗎?

this -> is -> a -> test 

,然後通過分享,我可能會得出兩個清單爲:

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

現在,如果我扭轉箭,我得到一棵樹,以測試爲根。這與圖/類別理論中的二元性是相同的概念。因此,我可以將樹和列表看作是雙重概念。

這是正確的/有用的嗎?

+1

我想不是,因爲那種共享不是自動的。 – 2013-03-12 17:06:32

+0

@DanielLyons這意味着雙重將是森林? – didierc 2013-03-12 17:17:20

+0

@didierc我認爲這意味着這個問題並不適用。 – 2013-03-12 17:23:22

回答

18

共享和懶惰讓你有任意的循環結構。例如,在Haskell定義

ones = 1 : ones 

產生由單個頂點(對應於1)和一個環(在圖論,而不是編程的意義上)的曲線圖。通過反轉箭頭,你會得到相同的結構,它不是一棵樹(因爲它有循環)。

所以,懶惰的語言並不是這樣。

+4

確實。這就是所謂的「圖減少」。 – 2013-03-12 17:34:53

相關問題