Ссылка на конструктор типа в ocamldoc

Я собираюсь ocamldoc предупреждения:

Предупреждение: Элемент MyModule.VariantName не найден

когда используешь {!MyModule.VariantName} в комментариях к документу.


ocamldoc док говорит

В этой главе мы используем элемент word для ссылки на любую из следующих частей исходного файла OCaml: объявление типа, значение, модуль, исключение, тип модуля, конструктор типа, поле записи, класс, тип класса, метод класса, значение класса или предложение наследования класса.

и позже при объяснении форматирования текста:

| {! string } вставить ссылку на элемент с именем string. строка должна быть полным именем элемента, например Foo.Bar.t, Тип ссылочного элемента может быть принудительным (полезно, когда различные элементы имеют одно и то же квалифицированное имя) со следующим синтаксисом: {! kind : string } где вид может быть module, modtype, class, classtype, val, type, exception, attribute, method или же section,

Могу ли я ссылаться на конструктор типа, используя {! string }?

Как первая группа видов элементов относится ко второй группе видов элементов?

1 ответ

Решение

Посмотрев на реализацию, похоже, что можно ссылаться на конструктор вариантов, но с довольно странным синтаксисом: вы должны использовать {!typename.constrname} синтаксис или, из другого модуля, {!Modulename.typename.constrname}, В приведенном ниже примере кода {!mylist.Cons} например. Это создаст гиперссылку, но, к сожалению, текст все равно будет typename.constrname а не просто ссылаться на само имя конструктора.

(Я также узнал, что существует "явный" способ сообщить ocamldoc, к какой синтаксической категории относится упомянутый идентификатор, я полагаю, что он поможет в некотором неоднозначном случае. Так же, как вы могли бы использовать любой {!mylist} или же {!type:mylist} чтобы обозначить конструктор типа, вы можете использовать либо {!mylist.Nil} или же {!const:mylist.Nil} обозначить вариант конструктора.)

Примечание к словарю: в объявлении типа

type 'a mylist =
| Nil
| Cons of 'a * 'a mylist

имена Nil а также Cons не называются "конструкторами типов", а только "конструкторами" или "конструкторами вариантов". Конструкторы типов - это имена параметризованных типов (или непараметризованных для конструкторов константных типов), живущих в типе, а не на уровне значений, mylist в этом примере.

Другие вопросы по тегам