使用 let 繫結定義函式

可以使用 let 為值指定值:

# let a = 1;;
val a : int = 1 

你可以使用類似的語法來定義函式。只需為引數提供其他引數。

# let add arg1 arg2 = arg1 + arg2;;
val add : int -> int -> int = <fun> 

我們可以這樣稱呼它:

# add 1 2;;
- : int = 3 

我們可以像這樣直接傳遞值,或者我們可以傳遞繫結到名稱的值:

# add a 2;;
- : int = 3 

在我們定義某些內容之後,直譯器為我們提供的行是具有其型別簽名的物件的值。當我們給它一個與 a 繫結的簡單值時,它回來了:

val a : int = 1

這意味著 a 是一個 int,它的值是 1

我們函式的型別簽名有點複雜:

val add : int -> int -> int = <fun> 

add 的型別簽名看起來像一堆整數和箭頭。這是因為帶有兩個引數的函式實際上是一個函式,它只接受一個引數,但返回另一個接受下一個引數的函式。你可以這樣讀它:

val add : int -> (int -> int) = <fun>

當我們想要動態建立不同型別的函式時,這非常有用。例如,一個向所有內容新增 5 的函式:

# let add_five = add 5;;
val add_five : int -> int = <fun>
# add_five 5;;
- : int = 10
# add_five 10;;
- : int = 15