2014-03-03 91 views

回答

7

代碼遞歸(它是在其本身來定義)。我相信@ leftroundabout關於函數的重點的想法是準確的。下一張幻燈片說

do putY (y - x) 
    gcdST 

Recursive data definition 
* not recursive function call 
* like ones = 1 : ones 

即沒有遞歸函數調用,因爲gdcST不是函數(它不需要參數!)。這是一個遞歸數據定義。

+0

「遞歸數據定義」對我來說是新的。但是嚴格來說,這是一種功能,不是嗎?我的意思是,它被聲明爲一個函數,並在每次調用時執行計算。 –

+2

@LayGonzález不,它不是一個函數 - 它不需要任何參數。在Haskell中,只有在類型中具有' - >'的情況下,才能使用這些值。而且,就像幻燈片所說的那樣,沒有「呼叫」 - 因爲沒有功能。它只執行計算,就像'ones = 1:ones'中'ones'的第二次發生執行計算產生一個列表。它確實評估價值,這是正確的。 –

+0

好的!現在很清楚。謝謝。 –

相關問題