Ссылка на конструктор типа в 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
в этом примере.