我们可以在OCaml中的函数内定义类型吗?

时间:2013-11-07 07:35:56

标签: ocaml

我是OCaml的新手。我想定义一个仅在一个函数中使用的类型。我不想让它在该功能之外可用。我们可以在该函数中定义它吗?或者还有其他方法可以达到同样的效果吗?

1 个答案:

答案 0 :(得分:12)

如果您有最新版本的OCaml,则可以使用本地模块:

let f x =
  let module Local = struct
    type t = A | B
  end in
  ...

在顶层定义类型并将其从.mli中删除可能更为自然:尽管它会全局隐藏,但文件中的其他代码可以看到它。 / p>