2017-10-20 133 views
1

那些返回類型的區別是什麼?咖喱函數類型中圓括號的區別

val fn1 : int −> (int −> (int −> int)) 
val fn2: (int −> int) −> (int −> int) 

這將創建類型的函數

int -> int -> int meaning int -> (int -> int) 

是這樣嗎?沒有支架,它們具有相同的含義!

回答

3

如您所說,fn1的功能類型相當於int -> int -> int -> int

當你有多個curried參數,像fn1 a b c,然後fn1 aint -> int -> int類型的函數,而fn1 a bint -> int類型的函數。因此fn1也可以被看作是一個返回函數的函數,該函數返回返回int的函數。添加像int -> (int -> (int -> int))這樣的括號就突出了這種解釋。

功能fn2不同的是:它需要int -> int類型的函數作爲參數並返回int -> int類型的另一功能。

+1

要加,'fn2'的類型也可以寫成'(int - > int) - > int - > int',但是第一個圓括號不能被刪除 – newacct