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