Module 返回模块的OCaml函数
我有以下模块签名:Module 返回模块的OCaml函数,module,ocaml,Module,Ocaml,我有以下模块签名: module type X_INT = sig val x: int end 如何编写一个以整数为参数并生成X_INT类型模块的函数 let gen_module x = (* generates a module of type X_INT back *)??? 循序渐进,遵循OCaml模块系统的发展历史: 作为ML函子: module Gen_module( A : sig val x : int end ) = struct let x = A.x end m
module type X_INT = sig val x: int end
如何编写一个以整数为参数并生成X_INT类型模块的函数
let gen_module x = (* generates a module of type X_INT back *)???
循序渐进,遵循OCaml模块系统的发展历史: 作为ML函子:
module Gen_module( A : sig val x : int end ) = struct
let x = A.x
end
module M = Gen_module(struct let x = 42 end)
let () = print_int M.x
但它不是一个函数,而是一个函子
通过本地let模块:
let gen_module x =
let module M = struct
let x = x
in
print_int M.x
但是您只能在本地使用M
通过第一类模块:
let gen_module x = (module struct let x = x end: X_INT)
let m = gen_module 42
let () =
let module M = (val m) in
print_int M.x
最接近你想要的东西,但需要明确的包装和解包