2014-01-14 72 views
-1

我試圖理解Haskell,我有一個問題:這個函數是什麼類型,以及如何調用它。這個haskell方法的聲明

two f(a,b) = f a b 
+2

我不知道你在這裏問什麼。是(a,b)'元組?是關於如何定義函數或函數的類型的問題? – Abizern

+0

如何調用它?我會說'uncurry'! – Ingo

+0

是的,我認爲這是一個tupple,即時通訊談論兩個:: .... – user3157778

回答

3

如果我們舉個例子,Int類型的參數,那麼two類型是這樣的:

two :: (Int -> Int -> Int) -> (Int, Int) -> Int 
two f (a,b) = f a b 

例如:

two (*) (3,4) 
12 

說明:

你正在接受一個函數,它帶有兩個參數(Int -> Int -> Int)和元組(Int, Int)並將該函數應用於ab

的實際類型,而不是限制的時候,其實是這樣的:

:t two 
two :: (t1 -> t2 -> t) -> (t1, t2) -> t 

因此,例如,其他的事情都是可能的:

two (++) ("he","llo") 
"hello" 

(等等等等)

+0

'two'的類型顯然不會被限制爲'Int',這是令人費解的。將它與實際類型一起介紹會不會更好,然後如果有必要,請使用'Int'提供一個具體示例? – amnn

+0

爲真,類型不受限制。我覺得'Int'的例子更容易理解。我會更清楚地注意到它 – vikingsteve