匿名 OCaml 结构是否有任何用例

use*_*536 1 ocaml module

OCaml 手册第 2 章说

\n
\n

一个结构体,由 struct\xe2\x80\xa6end 构造引入,该构造包含任意的定义序列。该结构通常通过模块绑定来命名。

\n
\n

是否有创建结构体而不为其指定模块名称的用例。\n如果没有,那么我们总是使用

\n
module Name =\n  struct\n    ...\n  end\n
Run Code Online (Sandbox Code Playgroud)\n

所以 struct 关键字似乎有点多余。

\n

Jef*_*eld 6

使用无名结构是可能的,甚至是常见的(至少在我的代码中)。一个例子:

module MyStrSet =
   Set.Make(struct type t = string let compare a b = compare b a end)
Run Code Online (Sandbox Code Playgroud)