例如,你可以在沒有定義遞歸結構的情況下在Haskell中定義一個列表嗎?或者用一些函數替換所有列表?所有遞歸結構都可以被非遞歸解決方案替代嗎?
data List a = Empty | (a, List a) -- <- recursive definition
編輯
我給列表作爲一個例子,但我真的問一般所有的數據結構。 也許我們只需要一個遞歸數據結構來處理需要遞歸的所有情況?就像Y combinator是唯一需要的遞歸函數一樣。 @TikhonJelvis的回答讓我想到了這一點。 現在我很確定這篇文章更適合cs.stackexchange。
關於當前選擇的答案
我真的找了一個看起來更像@DavidYoung & @TikhonJelvis給出的那些答案,但他們只給了部分答案,我很欣賞他們。 所以,如果有任何使用功能概念的答案,請分享。
你是在暗示[遞歸計劃](http://patrickthomson.ghost.io/an-introduction-to-recursion-schemes/)什麼的? – Carsten
@CarstenKönig我只讀過那篇文章的標題,我不知道它可能是這個問題的答案,但它是有道理的,因爲我確實試圖重構一個應用程序以使用f#更加反應,擴展。讓我檢查一下。非常感謝。 –
好吧,最後會有一些遞歸定義,它的類型取決於你所看到的列表的定義屬性 - 例如,你可以將列表等同於「摺疊」操作,並且它不會有遞歸在它的數據結構(它只是一個函數),但它很可能會在它的評價 - 或者你可以看到它作爲一個長陣列或... – Carsten