10

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.

4

2 回答 2

6

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