I use haddock and don't want all of my exported functions to be displayed in the documentation. Is it possible to hide specific functions? I found the prune attribute at http://www.haskell.org/haddock/doc/html/module-attributes.html, but this is not what I want since some functions which shall be exported don't have a documentation annotation.
问问题
857 次
2 回答
6
假设您当前的模块是Foo.Bar
,一种解决方案是将其分解为Foo.Bar
and Foo.Bar.Internal
。您可以将与您不想导出的函数相关的所有定义(甚至可能是所有定义)移动到Foo.Bar.Internal
. 然后,在 中Foo.Bar
,您将只重新导出您希望世界看到的定义。
这种方法有几个优点。它可以让你导出你需要的所有东西,同时仍然给用户一个明确的信号,表明某些东西不应该被使用。它还可以让您在Internal
模块中记录您的特殊功能,这将很有用(如果只是为了您未来的自我:P)。
您可以简单地不导出文件,将其隐藏起来。但是,这不一定是最好的方法;查看如何、为什么以及何时使用“.Internal”模块模式的答案?, 特别是luqui 的.Foo.Bar.Internal
.cabal
于 2013-06-03T02:04:14.120 回答
2
另一种可能性是让一个模块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
模块。
于 2018-11-08T02:57:05.967 回答