TL;DR - 在 OCaml 中,如何调用该类型的外观type 'elt set = (module BatSet.S with type elt = 'elt)以及如何创建该类型的值?
目前,我正在阅读 Tezos 协议 [*] 中的代码,我看到了以下代码。
module type Boxed_set = sig
type elt
val elt_ty : elt comparable_ty
module OPS : S.SET with type elt = elt
val boxed : OPS.t
val size : int
end
type 'elt set = (module Boxed_set with type elt = 'elt)
Run Code Online (Sandbox Code Playgroud)
我从未听说过像type a = (module B). 于是我打开一个顶级OCaml的解释和使用模块复制类似的使用电池。以下代码是我复制的日志。
$ ocaml
OCaml version 4.07.1
# #use …Run Code Online (Sandbox Code Playgroud) 像“A_of_B”这样的名字是 OCaml 中唯一的命名约定,但我想知道为什么。这是法语和英语语言使用不同的结果吗?还是 Xavier Leroy 的个人喜好?
背景:我发现 OCaml 的类型转换函数的名称类似于A_of_B,例如,int_of_string : string -> int或float_of_int : int -> float在 Stdlib 模块中。其他流行的语言使用类似的名称AtoB,例如,itoaC 中的函数。