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

时间:2017-09-04 20:35:50

标签: types ocaml reason

如果我有一个包含

的实现(.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;

但这会导致{语法错误。

1 个答案:

答案 0 :(得分:1)

我怀疑您问题的根本原因是您发布的OCaml代码无效。它应该是

module IntMap: Map.S with type key = int

等效的原因是

module IntMap: Map.S with type key = int;
type foo = IntMap.t string;

差别不大:)

此外,如果您不了解它,reason-tools是一个很棒的工具,可以在Reason和OCaml之间进行转换。它确实需要有效的输入;)