Пикша: Задокументировать объявление с предполагаемой подписью типа?

Рассмотрим следующий модуль

{-# LANGUAGE RecordWildCards #-}
module Example (foo, fuh, fon, fuzz) where

import qualified FirstClassModule (Bar(foo,fuh,fon,fuzz), makeBar)

FirstClassModule.Bar {..} = FirstClassModule.makeBar parameter

parameter :: Int
parameter = 15

Предполагается, что модуль FirstClassModule предоставляет тип записи Bar, который работает немного как модуль первого класса. Затем модуль Example создает экземпляр модуля и использует расширение RecordWildCards, чтобы ввести имена в область видимости и сделать их экспортируемыми.

Когда вы запускаете Haddock (версия 2.8) в этом модуле, он вмешивается в сигнатуры типов для функций foo и включает их в документацию API. Теперь мой вопрос:

Есть ли способ задокументировать полученные имена foo, fuh и т. Д. без записи их типовых подписей в модуле Example?

Я не хочу писать сигнатуры типов, потому что в данном случае они являются шаблонными. Если мне придется их записать, этот модуль теряет смысл существования.


person Heinrich Apfelmus    schedule 09.04.2011    source источник


Ответы (2)


Из руководства пользователя Haddock:

http://www.haskell.org/haddock/doc/html/markup.html#id564988

Обратите внимание, что Haddock не содержит системы типов Haskell - если вы не пишете сигнатуру типа для функции, Haddock не может определить, какой у нее тип, и он не будет включен в документацию.

Документация для версии 2.8, версия 2.9 самая новая.

person Antoine Latter    schedule 01.05.2011

На самом деле я только что узнал, что начиная с версии 2.9.2 Haddock будет выводить сигнатуры типов для экспортируемых функций. К сожалению, я не могу найти способ украсить их дополнительной документацией.

Например, модуль

module Test (foo) where

foo = "bar"

создаст подпись типа

foo :: String

в документации, но кажется, что я не могу добавить к нему текст.

person Heinrich Apfelmus    schedule 30.12.2011
comment
Теперь вы можете поместить комментарий Пикши над foo, и он будет работать должным образом. Я знаю, что с момента этого ответа прошло ~ 2 года, но вы, возможно, захотите его обновить. - person Mateusz Kowalczyk; 13.01.2014