Есть ли способ использовать идентификатор OCaml, который является зарезервированным ключевым словом в Reason?
Рассмотрим следующий пример:
(* some_library.ml (valid OCaml) *)
type pub = {
x: string;
}
Когда я пытаюсь использовать тип pub
из Reason,
/* 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.
Чтобы быть более конкретным, я пытаюсь использовать введите в библиотеку Nocrypto.
Было бы неплохо, если бы был способ избежать ключевого слова в ReasonML или указать доступное имя в OCaml ... Что-то вроде
/* MyApp.re (draft/invalid ReasonML) */
type someTypeAlias = Some_library.[@reason.keyword_as_identifier "pub"];
Есть что-то подобное? Или невозможно было бы создать обходной путь с помощью external
? Мне не очень нравится разветвлять библиотеку только для того, чтобы переименовать один тип.