Как получить доступ к действительному идентификатору OCaml из Reason, который является зарезервированным ключевым словом в Reason - PullRequest
2 голосов
/ 08 марта 2019

Есть ли способ использовать идентификатор OCaml, который является зарезервированным ключевым словом в Reason?

Давайте рассмотрим следующий пример:

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

Когда я пытаюсь использовать тип 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 в библиотеке Nocrypto .

Было бы неплохо, если бы был способ избежать ключевого слова в ReasonML или указать имя для доступа в OCaml ... Что-то вроде

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

Есть что-то подобное? Или не было бы возможно создать какой-то обходной путь, используя external? Я не очень рад разветвлению библиотеки только для переименования одного типа.

1 Ответ

0 голосов
/ 08 марта 2019

Простой обходной путь - добавить псевдоним типа в оболочку синтаксиса Ocaml:

 type notpub = pub = { x: string }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...