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

时间:2015-02-27 03:45:57

标签: function 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)在参数列表中有()怎么样?

1 个答案:

答案 0 :(得分:6)

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

返回()是ML方式不返回任何内容。

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