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

我们可以在OCaml中定义函数内部的类型吗?,ocaml,Ocaml,我是OCaml的新手。我想定义一个只在一个函数中使用的类型。我不想让它在该功能之外可用。我们能在这个函数中定义它吗?或者有其他方法可以实现同样的效果吗?如果您有最新版本的OCaml,您可以使用本地模块: let f x = let module Local = struct type t = A | B end in ... 更自然的做法是在顶层定义类型,并将其从.mli中删除:这样会使其全局隐藏,尽管文件中的其他代码可以看到它。并且您可以打开本地模块。

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

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

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

更自然的做法是在顶层定义类型,并将其从
.mli
中删除:这样会使其全局隐藏,尽管文件中的其他代码可以看到它。

并且您可以打开本地模块。