2013-07-20 12 views
6

は、次の例を考えてみましょう:ハドック:デフォルトのクラスのドキュメントに置き換え癖を持つインスタンス関数のドキュメント

instance (Monad m) => MonadState s (ChronoT s e m) where 

    -- | Returns the present-day state. 
    get = ChronoT $ do 
     (ChronoS _ s _) <- get 
     return s 

    -- | Set the present-day state directly, erasing the past and future for 
    -- safety. See also 'paradox'. 
    put x = ChronoT $ do 
     (ChronoS _ _ _) <- get 
     put $ mkChronoS x 

ハドックを介して実行すると、機能getputが現れ、彼らはMonadStateから既定のドキュメントを使用しています。自分のモジュールに自分のドキュメントを含めるにはどうしたらいいですか?

(あなたは私がレポherecabal haddockを実行して、何を意味するかを見ることができます)

+6

私が知る限り、haddockはインスタンス宣言を文書化しません(定義されたインスタンスをリストすることを除いて)。最上位レベルのエンティティを 'chronoGet'と' chronoPut'とし、それらを文書化(エクスポート)し、インスタンスを定義することができます。... get get = chronoGet; put = chronoPut'もちろんそれほど満足できるものではありません。 –

答えて

3

あなたがすることはできません。

あなたのできることは、あなたのインスタンスをドキュメント化することです。

-- | You can have a brief description here 
instance (Monad m) => MonadState s (ChronoT s e m) where 
… 

これにより、生成されたinstancesボックスの横に説明が表示されます。これは簡単に行うのが望ましいはずですが、実際に必要な場合は、質問のコメント作成者のように、フィールドを実装する関数のドキュメントをユーザーに指摘するなどの作業をさせることができます。

個人的には、このように各フィールドを文書化することは意味がないと思います。フィールドの意味は、クラス定義の文書化とインスタンスへのコメントから明らかにしてください。

+0

インスタンスボックスはどこですか? (私はhaddock 2.14.3を使用しています) –

+1

ここでは、データ型定義の下に表示されているボックスを参照していました。 Maybeの例では、インスタンス自体にあったコメントも示しています:http://fuuzetsu.co.uk/images/1412881296.png –

関連する問題