使用 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