OCaml中'()'的含义是什么?

pro*_*eek 1 ocaml function

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 () ->
Run Code Online (Sandbox Code Playgroud)

()在最后一行(fun use_string trial filename ())中看到了.

同样来自OCaml中的Print a List,我也在()第一场比赛中看到了.

let rec print_list = function 
[] -> ()
| e::l -> print_int e ; print_string " " ; print_list l
Run Code Online (Sandbox Code Playgroud)

那么,()两种情况下的含义是什么?lambda表达式(fun)()在参数列表中有什么作用?

gsg*_*gsg 6

它是一个无效的构造函数,类型unit的唯一构造函数.惯例是使用此构造函数来指示"没有特定值",这在使用有效代码时很常见.

返回()是ML返回任何东西的方式.

当出现在参数列表中时,它与其他任何构造函数一样匹配.这是一种表明参数没有价值的方法.因为所有功能都是一元的,所以必须在ML中执行此操作.你不能拥有零参数的函数,所以你传递一个不包含任何信息的参数,即().