如何在接口文件中使用仿函数的输出签名?

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 之间进行转换。不过它确实需要有效输入 ;)