我们能在OCaml函数内定义类型吗?

12

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

我对OCaml不熟悉,但根据给定的文本理解,您可以在该函数内定义类型,也可以使用模块和私有类型来实现该目的。
1个回答

15

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

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

或许更自然的方法是在顶层定义类型并将其从.mli文件中省略掉:这样可以使其全局隐藏,但其他代码在文件中仍然可以看到它。


5
你可以打开本地模块。 - lukstafi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接