ocaml:什么是括号中有关键字 val 的表达式?

ocaml: what is an expression that has the keyword val in parenthesis?

我运行进入这段代码,我不明白语法:

module Proof = (val p)

我知道 val 可以用在模块类型或签名中,但我还没有看到它被这样使用。

此语法用于 解包 第一个 class 模块。

module type IntWrapper = sig
  val wrappedInt : int
end

module MyIntWrapper : IntWrapper = struct
  let wrappedInt = 2
end

(* pack a module into a value *)
let packedModule = (module MyIntWrapper : IntWrapper)

(* unpack module *)
module UnpackedModule = (val packedModule : IntWrapper)

(* or *)
module UnpackedModule' : IntWrapper = (val packedModule)

参考:Real world ocaml book