如何从 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
如果我尝试使用建议的标识符(_pub
或 pub_
),它不起作用,因为它们在 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 }
有没有办法在 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
如果我尝试使用建议的标识符(_pub
或 pub_
),它不起作用,因为它们在 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 }