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