是否可以隐藏使用haddock出现在文档中的特定功能?

时间:2013-06-02 20:31:59

标签: haskell haddock

我使用haddock并且不希望我的所有导出函数都显示在文档中。是否可以隐藏特定功能? 我在http://www.haskell.org/haddock/doc/html/module-attributes.html找到了prune属性,但这不是我想要的,因为一些要导出的函数没有文档注释。

2 个答案:

答案 0 :(得分:4)

假设您当前的模块为Foo.Bar,一种解决方案是将其分解为Foo.BarFoo.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

答案 1 :(得分:1)

另一种可能性是使模块Foo.Bar.Hidden导出要隐藏的所有内容,然后从Foo.Bar.Hidden重新导出整个Foo.Bar模块:

module Foo.Bar (
  blah1,
  blah2,
  blah3,
  module Foo.Bar.Hidden
)
where
import Foo.Bar.Hidden
blah1 = ...
blah2 = ...
blah3 = ...

这样,隐藏的内容将从Foo.Bar导出,但不包含在文档中。该文档将仅包含一个相对不引人注目的整体链接到Foo.Bar.Hidden模块。