我在回顧我的Haskell編程課程中的一箇舊考試,我似乎無法將我的頭圍繞此函數(我認爲這裏給出的信息太少)。舊考試中Haskell功能的解釋
給出的代碼是
myId x = x
function n f
| n > 0 = f . function (n-1) f
| otherwise = myId
我知道,如果我例如調用該函數與輸入2 (*2)
,我會得到一個功能的結果。如果我打電話給(-2) (*2) 1
,我會得到結果1
。
我只是不知道如何?此外,我無法圍繞函數的類型轉換我的頭。
我知道這兩個選項是正確的,但我不明白爲什麼(可能是括號,這使我目前困惑)。
function :: (Num a, Ord a) => a -> (a -> a) -> a -> a
function :: (Num a, Ord b) => a -> (b -> b) -> b -> b
任何人都可以清楚我應該如何「讀」這個功能,我應該怎樣理解類型轉換工程(如何在閱讀我的編程在Haskell文學和學習你Haskell的,但在圈已經持續了幾天)。
非常感謝。完全得到它(最後點連接:D) – Anticipating
你沒有解釋爲什麼第二種類型是正確的。 :) –