Function 什么';这是';()';用OCaml?

Function 什么';这是';()';用OCaml?,function,ocaml,Function,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 () ->

在中,我发现以下代码:

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\u-string-trial-filename()

同样从中,我在第一场比赛中也看到了
()

let rec print_list = function 
[] -> ()
| e::l -> print_int e ; print_string " " ; print_list l

那么,在这两种情况下,
()
的含义是什么?lambda表达式(
fun
)的参数列表中如何包含
()

它是一个空构造函数,是的唯一构造函数。约定是使用此构造函数指示“无特定值”,这在处理有效代码时很常见

返回
()
是不返回任何内容的ML方法


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

它是空构造函数,是函数的唯一构造函数。约定是使用此构造函数指示“无特定值”,这在处理有效代码时很常见

返回
()
是不返回任何内容的ML方法


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

最接近的类比是C中的
void
类型。但有一个微妙但重要的类型理论差异。相关:最接近的类比是C中的
void
类型。但有一个微妙但重要的类型理论差异。相关:不仅所有ML函数都只取一个参数,但它们也只返回一个结果。因此,
()
也是函数在没有任何想要返回的值时返回的内容。这两种类型都是典型的有效代码:如果
f
是纯的并且不带参数,那么没有理由不将其设置为常量,如果它没有返回的结果,这意味着它的效果很有趣。单元类型在多态数据结构中也很有用,例如用作一组键的哈希表(
(字符串,单位)Hashtbl.t
)。不仅所有的ML函数只接受一个参数,而且它们也只返回一个结果。因此
()
也是函数在没有任何要返回的值时返回的值。这两种类型都是典型的有效代码:如果
f
是纯的且不带参数,则没有理由不将其设为常量,如果它没有要返回的结果,这意味着它的效果很有趣。单位类型在p中也很有用多形数据结构,例如仅用作一组键的哈希表(
(字符串,单位)Hashtbl.t
)。