module type Arity =
sig
val arity : nat (* in my real code it has another type *)
end
module S =
functor (A : Arity) -> struct
let check = ...
end
我想在没有实现签名的情况下使用仿函数check
内部的函数。我阅读了一流的模块,但仍然不明白如何编写它(在实践中)。这是我的草稿代码:S
Arity
let A = has type of (module Arity)
然后
let M = S (A)
然后我可以通过调用check
函数
M.check
我试过了:
let f arity = (module (val arity : Arity) : Arity)
它返回:val f : (module Arity) -> (module Arity)
你能帮我写这个一流的模块吗?我可以写进去Ocaml
吗?
同样在(http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual021.html#toc81)第 7.14 节中它说:
“模块表达式(val expr : package-type)
不能在函子的主体中使用,......”
我不明白。你能举个例子帮助我理解吗?
谢谢您的帮助。