2013-07-20 2 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 

При запуске через пикши, функции get и put появляются, но они используют документацию по умолчанию из MonadState , Как включить в свой модуль мою собственную документацию?

(Вы можете увидеть, что я имею в виду, запустив cabal haddock по репо here)

+6

Насколько я знаю, вы не можете, пикша не документирует объявления экземпляра (за исключением перечисления экземпляра, как определено). Вы можете создавать объекты верхнего уровня 'chronoGet' и' chronoPut', документировать (и экспортировать) их и определять экземпляр '... where 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 –

Смежные вопросы