2014-05-03 1 views
3

Возможно ли документировать метод класса с помощью Haddock и запрашивать фрагменты документации в коде декларации экземпляра?Haddock - попытка использовать именованный блок при документировании метода класса

Для Exemple, я хотел бы класс документированную так:

class ModifMATH a where 
    -- | Explanations of simpMath method. 
    -- 
    -- 
    -- $part1 
    -- $part2 
    -- $part3  
    simpMath :: a -> a 

и экземпляр документированную, как это:

instance ModifMATH MathExpress where 
    -- $part1 a piece of explanation 
    simpMath (MathDouble n)   = ... 

    -- $part2 another explanation 
    simpMath (MathMult a b) = ... 

    -- $part3 end of explanations 
    simpMath (MathAdd a b) = ... 

и получить HTML пикши документации выглядеть следующим образом (извините я есть нет изображения):

class ModifMATH a where 
    Methods 
     simpMath :: a -> a 
     Explanations of simpMath method. 
     a piece of explanation 
     another explanation 
     end of explanations 

Эта организация документации будет более читаемой le и extensible при добавлении шаблонов в экземпляр, сохраняя всю документацию метода в отдельном параграфе. Является ли это возможным?

Я использую Haddock версию 2.10.0. на Debian 7.0.

Благодарим за помощь.

ответ

2

Нет, это невозможно разделить документацию следующим образом.

Единственное место, где это было возможно более или менее, было в case of some questionable use of record fields, но здесь не применяется, и мы изменили это поведение в 2.14.x.

Возможно, вы можете использовать a definition list, чтобы попытаться получить естественный раскол в вашей документации. Например, что-то вроде

class ModifMATH a where 
    -- | Explanations of simpMath method. 
    -- 
    -- [MathDouble case] $part1 
    -- 
    -- [MathMult case] $part2 
    -- 
    -- [MathAdd case] $part3  
    simpMath :: a -> a 

Пожалуйста, обратите внимание, что документы относятся к версии 2.14.x, которая является довольно немного новее, чем то, что вы используете так, например, эти новые строки между каждым из списка определений необходимы.

Это должно выглядеть более или менее, как:

deflist http://fuuzetsu.co.uk/images/1399715808.png

Вы можете пойти многострочный, если это необходимо, обратитесь к документации.