2013-05-07 77 views
3

a.ml這樣的:如何基於模塊簽名爲OCaml生成文檔?

module type ASig = 
    sig 
    val do_something : unit -> int;; 
    end ;; 

module A:ASig = 
    struct 
    let do_something() = 1;; 
    let do_secrectly() = 2;; 
    end;; 

所以我模塊A的界面應該只有do_something()


但是,如果使用ocamldoc -html a.ml,雖然模塊SIG聲明interfact,商務部仍然暴露了模塊A的所有功能,如:

module A: sig .. end 
val do_something : unit -> int 
val do_secrectly : unit -> int 

我應該如何使用ocamldoc所以所有文件都是基於module sig

回答

5

這是不幸的是,不可能與目前執行ocamldoc的:它需要約束考慮在內,但是在一個純粹的語法水平,它只能使用他們時,他們有明確的形式sig ... end而不是指現有的標識符(因爲分析是在分析的語法樹上手工完成的,而不是在類型樹上完成的)。

您可以:

  • 使用.mli和文件存在(如果你只提供.mli,只有什麼是它會被記錄)

  • 或使用標記(**/**)告訴ocamldoc放棄模塊的其餘部分,模塊類型等等,然後才能保留私有函數。

+0

'或者使用標記(**/**)來告訴ocamldoc放棄模塊的其餘部分,模塊類型等,然後才能保留私有函數。謝謝。如果你可以在你的電子郵件中加入這個部分,那會很好,因爲那部分實際上是回答這個問題。 – 2013-05-07 12:38:41

+0

看來有一些工作正在進行中,以解決codoc中的一些問題:https://opam.ocaml.org/blog/codoc-0-2-0-released/更新的ocamldoc生成器。 – 2015-04-19 13:57:53