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
我希望在实现签名Arity
的情况下,在函数对象S
内使用check
函数。 我阅读了一等模块,但仍不理解如何编写(实际操作中)。这是我草稿代码:
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)
不能在函数器的主体中使用..."
我不太理解。您可以通过举个例子来帮助我理解吗?
感谢您的帮助。