1
那些返回類型的區別是什麼?咖喱函數類型中圓括號的區別
val fn1 : int −> (int −> (int −> int))
val fn2: (int −> int) −> (int −> int)
這將創建類型的函數
int -> int -> int meaning int -> (int -> int)
是這樣嗎?沒有支架,它們具有相同的含義!
那些返回類型的區別是什麼?咖喱函數類型中圓括號的區別
val fn1 : int −> (int −> (int −> int))
val fn2: (int −> int) −> (int −> int)
這將創建類型的函數
int -> int -> int meaning int -> (int -> int)
是這樣嗎?沒有支架,它們具有相同的含義!
如您所說,fn1
的功能類型相當於int -> int -> int -> int
。
當你有多個curried參數,像fn1 a b c
,然後fn1 a
是int -> int -> int
類型的函數,而fn1 a b
是int -> int
類型的函數。因此fn1
也可以被看作是一個返回函數的函數,該函數返回返回int
的函數。添加像int -> (int -> (int -> int))
這樣的括號就突出了這種解釋。
功能fn2
不同的是:它需要int -> int
類型的函數作爲參數並返回int -> int
類型的另一功能。
要加,'fn2'的類型也可以寫成'(int - > int) - > int - > int',但是第一個圓括號不能被刪除 – newacct