2013-06-02 1 views
8

Я использую пикшу и не хочу, чтобы все экспортированные мной функции отображались в документации. Можно ли скрыть конкретные функции? Я нашел атрибут prune в http://www.haskell.org/haddock/doc/html/module-attributes.html, но это не то, что я хочу, так как некоторые функции, которые должны быть экспортированы, не имеют аннотации документации.Можно ли скрыть определенные функции из документации с помощью пикши?

+0

Если вы экспортируете fuction, почему бы вам не указать его в документации? – jwodder

+0

Эта функция бесполезна для тех, кто хочет использовать этот модуль. Однако мне нужна эта функция в модуле для тестирования, и я не хочу копировать и вставлять исходный код в этот модуль тестирования. – efie

+2

Возможно, вы можете переместить код в скрытый модуль. Затем публичный модуль (выставленный в кабальных терминах) и модуль тестирования могут импортировать этот модуль, а открытый модуль может скрывать определенные функции, просто не реэкспортируя их. – raymonad

ответ

4

Предполагая, что ваш текущий модуль составляет Foo.Bar, одним из решений было бы разбить его на Foo.Bar и Foo.Bar.Internal. Вы можете переместить все определения, относящиеся к функции, которую вы не хотите экспортировать, - возможно, даже все определения - в Foo.Bar.Internal. Затем в Foo.Bar вы будете реэкспортировать только определения, которые вы хотите видеть в мире.

Этот подход имеет несколько преимуществ. Он позволяет вам экспортировать все, что вам нужно, но при этом дает пользователю четкий знак того, что определенные вещи не должны использоваться. Он также позволяет документировать ваши специальные функции в модуле Internal, который будет полезен (если только для вашего будущего: P).

Вы могли бы просто не экспорт Foo.Bar.Internal в файле .cabal, скрывая его от мира. Однако это не обязательно лучший подход; посмотрите ответы на How, why and when to use the ".Internal" modules pattern?, в частности luqui's.

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

  • Нет связанных вопросов^_^