2012-09-27 83 views
5

在Haskell中,所有函數原本都是curried的,對吧?Haskell - 關於Curried

所以,讓我們來看看max函數,然後我會寫出我對它的工作原理的理解。

當我寫的東西是這樣的:

max 4 5 

什麼情況是,一個新的funcion是創建內部有4個值,然後臨危值,所以這個功能適用於5和正確的價值被返回?

我以某種方式說錯了什麼,或者這是正確的嗎?

+4

記住人們:在評論中證明你的評價是正確的。 –

+0

我猜他們是由於這個問題有語法錯誤,這不是一個很好的理由downvote ......如果這個問題很難理解,請澄清。 –

+1

你不能在問答網站上冷落失敗的知識,但你可以付出努力,但我認爲這個問題顯示了良好的理解和明確(成功)的努力來解決問題。我已經將一些語法修改爲主語 - 賓語,因爲賓語 - 賓語在某種程度上掩蓋了其意義。 – AndrewC

回答

9

這是正確的。你能記住是所有關於通過記住它的兩個最重要的身份是什麼鑽營:

-- Function type right-associativity: 
a -> b -> c = a -> (b -> c) 

-- Function application left-associativity: 
f x y = (f x) y 

這兩個身份一起工作併產生咖喱語言。

+0

@ user428691所以'max 4 5'是'(max 4)5'和'max 4 :: Integer - > Integer'的縮寫,這意味着它是一個函數,就像你所說的那樣。 – AndrewC

+0

完美,謝謝 – elf