Unix 模块中的示例:
val environment : unit -> string array
为什么不只是:
val environment : string array
?
最佳答案
因为它表示一个函数,该函数将单元类型的值作为其参数。单位类型仅由值“()”占据。这通常用于表示该函数将执行某种 IO 或引发副作用,并且不需要输入。您提供的第二种类型签名是值的签名,而不是可以应用的函数。如果某个表达式绑定(bind)到此名称,则该表达式将在值绑定(bind)发生时计算,而不是在它被引用时计算(就像函数应用程序的情况一样)。
关于ocaml - 为什么有些 OCaml 函数以 () 作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3494668/