OCaml 中 '()' 的含义是什么?
What's the meaning of '()' in OCaml?
在the book Real World OCaml中,我找到这段代码:
let command =
Command.basic
~summary:"Generate an MD5 hash of the input data"
Command.Spec.(
empty
...
+> anon (maybe_with_default "-" ("filename" %: file))
)
(fun use_string trial filename () ->
我在最后一行看到 ()
(fun use_string trial filename ()
)。
同样来自Print a List in OCaml,我在第一场比赛中也看到了()
。
let rec print_list = function
[] -> ()
| e::l -> print_int e ; print_string " " ; print_list l
那么,这两种情况下的()
是什么意思呢? lambda 表达式 (fun
) 如何在其参数列表中包含 ()
?
它是一个 nullary 构造函数,type unit
的唯一构造函数。约定是使用此构造函数来表示"no particular value",这在使用有效代码时很常见。
返回 ()
是 ML 方法 return 什么都没有。
当出现在参数列表中时,它会被匹配,就像任何其他构造函数一样。这是一种表明参数没有价值的方法。在 ML 中有必要这样做,因为所有函数都是一元的。你不能有一个参数为零的函数,所以你传递一个不包含任何信息的参数,即 ()
.
在the book Real World OCaml中,我找到这段代码:
let command =
Command.basic
~summary:"Generate an MD5 hash of the input data"
Command.Spec.(
empty
...
+> anon (maybe_with_default "-" ("filename" %: file))
)
(fun use_string trial filename () ->
我在最后一行看到 ()
(fun use_string trial filename ()
)。
同样来自Print a List in OCaml,我在第一场比赛中也看到了()
。
let rec print_list = function
[] -> ()
| e::l -> print_int e ; print_string " " ; print_list l
那么,这两种情况下的()
是什么意思呢? lambda 表达式 (fun
) 如何在其参数列表中包含 ()
?
它是一个 nullary 构造函数,type unit
的唯一构造函数。约定是使用此构造函数来表示"no particular value",这在使用有效代码时很常见。
返回 ()
是 ML 方法 return 什么都没有。
当出现在参数列表中时,它会被匹配,就像任何其他构造函数一样。这是一种表明参数没有价值的方法。在 ML 中有必要这样做,因为所有函数都是一元的。你不能有一个参数为零的函数,所以你传递一个不包含任何信息的参数,即 ()
.