如何从 Reason 中访问有效的 OCaml 标识符,这是 Reason 中的保留关键字

How to access a valid OCaml identifier from Reason that is a reserved keyword in Reason

有没有办法在 Reason 中使用作为保留关键字的 OCaml 标识符?

让我们考虑以下示例:

(* some_library.ml (valid OCaml) *)
type pub = {
  x: string;
}

当我尝试使用 Reason 中的类型 pub 时,

/* MyApp.re (invalid ReasonML) */
type someTypeAlias = Some_library.pub;

由于"pub"是Reason中的保留关键字,显示语法错误

Error: 743: pub is a reserved keyword, it cannot be used as an identifier. Try `pub_` or `_pub` instead

如果我尝试使用建议的标识符(_pubpub_),它不起作用,因为它们在 OCaml 文件中需要相同的名称。

更具体地说,我正在尝试使用 pub type in Nocrypto library

如果有一种方法可以在 ReasonML 中转义关键字或在 OCaml 中指定访问的名称,那就太好了……像

/* MyApp.re (draft/invalid ReasonML) */
type someTypeAlias = Some_library.[@reason.keyword_as_identifier "pub"];

有这样的吗?或者是否可以使用 external 创建一些解决方法?我对为了重命名一种类型而分叉库不是很兴奋。

一个简单的解决方法是在 Ocaml 语法包装器中添加类型别名:

 type notpub = pub = { x: string }