我完全失去了對這個。有人解釋說,功能是正確的,所以let add x y = x + y;;
有一個函數類型int -> int -> int
或int -> (int -> int)
。OCaml的 - 給類型的函數(INT - > INT) - > INT
我不知道我怎麼會定義(int -> int) -> int
類型的函數。我想我會有第一個參數是一個函數,通過int
並返回int
。我已經試過:
let add = fun x y -> x + y
--- int -> int -> int
let add = fun f x = (f x) + 3
--- ('a -> int) -> 'a -> int
類型add'的'是正常的:'F'可以,只要它返回一個'int'能夠執行加法帶走任何東西。例如'add int_of_string「2」'是有效的。編譯器生成最常用的類型,並且沒有任何限制'x'的類型。如果你寫了'let add f x = f(x + 1)+ 3',那將是不同的。 – ChriS