我将尝试扩展OCaml中的一个函数对象。例如,假设以下函数对象
我正在尝试创建一个类似的函数对象
但是我在这里遇到了语法错误。 我正在尝试使用更多的函数扩展
X
:module type X = functor (A : ModuleA) -> I with type t := A.t
我正在尝试创建一个类似的函数对象
Y
,它也接受A : Module A
,但返回I
的扩展版本。
我尝试的内容如下:module type Y = functor (A : ModuleA) ->
sig
include X(A)
val blah : A.t -> int
end
但是我在这里遇到了语法错误。 我正在尝试使用更多的函数扩展
X
的结果签名。在OCaml中是否可能?我做错了什么?
谢谢!
编辑:
我想我的问题是:为什么对于模块和模块类型,函数器的行为不同?
上面的函数器X
返回一个模块类型(至少这就是我读到的表达式)。如果允许此表达式,则为什么OCaml禁止扩展结果模块类型?