Как создать документацию для OCaml на основе сигнатур модулей?
Я имею a.ml
как это:
module type ASig =
sig
val do_something : unit -> int;;
end ;;
module A:ASig =
struct
let do_something () = 1;;
let do_secrectly () = 2;;
end;;
Так что для моего модуля А интерфейс должен быть только do_something()
,
Но если я использую ocamldoc -html a.ml
, хотя модуль sig объявляет взаимодействие, документ по-прежнему предоставляет все функции в модуле A, например:
module A: sig .. end
val do_something : unit -> int
val do_secrectly : unit -> int
Как я должен использовать ocamldoc
так что все документы основаны на module sig
?
1 ответ
К сожалению, это невозможно в текущей реализации ocamldoc: она учитывает ограничения, но на чисто синтаксическом уровне она может использовать их только в том случае, если они имеют явную форму sig ... end
вместо ссылки на существующий идентификатор (потому что анализ выполняется вручную по синтаксическому синтаксическому дереву, а не по типизированному дереву).
Вы также можете:
использовать
.mli
и документ там (если вы предоставите только.mli, только то, что в нем будет задокументировано)или используйте разметку
(**/**)
попросить ocamldoc отказаться от остальной части модуля, типа модуля и т. д. перед функциями, которые вы хотите оставить закрытыми.