在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
)在参数列表中有()
怎么样?
答案 0 :(得分:6)
它是一个无效的构造函数,是type unit
的唯一构造函数。惯例是使用此构造函数来指示"没有特定值",这在使用有效代码时很常见。
返回()
是ML方式不返回任何内容。
当出现在参数列表中时,它与其他构造函数一样匹配。这是一种表明参数没有价值的方法。因为所有功能都是一元的,所以在ML中这样做是必要的。你不能拥有零参数的函数,所以你传递一个不包含任何信息的参数,即()
。