如何在接口文件中使用仿函数的输出签名?
How can I use the output signature of a functor in an interface file?
如果我有一个包含
的实现(.re
)文件
module IntMap =
Map.Make {
type t = int;
let compare = compare;
};
type foo = IntMap.t string;
如何将foo
的签名添加到接口(.rei
)文件中?类似于 OCaml 的
module IntMap = Map.S with type key = int
type foo = string IntMap.t
我预计会是
module IntMap =
Map.S {
type t = int;
};
type foo = IntMap.t string;
但这会导致 {
处出现语法错误。
我怀疑您问题的根本原因是您发布的 OCaml 代码无效。应该是
module IntMap: Map.S with type key = int
Reason 等价于
module IntMap: Map.S with type key = int;
type foo = IntMap.t string;
差别不大:)
此外,如果您不知道,reason-tools 是一个很棒的工具,可以为您在 Reason 和 OCaml 之间进行转换。不过它确实需要有效输入 ;)
如果我有一个包含
的实现(.re
)文件
module IntMap =
Map.Make {
type t = int;
let compare = compare;
};
type foo = IntMap.t string;
如何将foo
的签名添加到接口(.rei
)文件中?类似于 OCaml 的
module IntMap = Map.S with type key = int
type foo = string IntMap.t
我预计会是
module IntMap =
Map.S {
type t = int;
};
type foo = IntMap.t string;
但这会导致 {
处出现语法错误。
我怀疑您问题的根本原因是您发布的 OCaml 代码无效。应该是
module IntMap: Map.S with type key = int
Reason 等价于
module IntMap: Map.S with type key = int;
type foo = IntMap.t string;
差别不大:)
此外,如果您不知道,reason-tools 是一个很棒的工具,可以为您在 Reason 和 OCaml 之间进行转换。不过它确实需要有效输入 ;)