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 中有必要这样做,因为所有函数都是一元的。你不能有一个参数为零的函数,所以你传递一个不包含任何信息的参数,即 ().