{-# OPTIONS_HADDOCK hide #-} 对非导出模块有影响吗?

Ben*_*ood 3 haskell cabal haddock

假设我有一个使用 Cabal 打包和构建的库,并且某些模块Internal不在我的 cabal 文件的Exposed-modules. 如果我指定一个编译指示,会有什么区别吗?

{-# OPTIONS_HADDOCK hide #-}
Run Code Online (Sandbox Code Playgroud)

位于 的顶部Internal.hs,或者根据 Haddock 的说法它已经自动隐藏了?

如果确实有影响,会产生什么影响?

Dan*_*her 5

--internal如果包的黑线鳕是使用标记 to 来创建的,那么它确实会有所不同cabal haddock。

$ cabal help haddock
Usage: cabal haddock [FLAGS]

Flags for haddock:
 -h --help                  Show this help text
 -v --verbose[=n]           Control verbosity (n is 0--3, default verbosity
                            level is 1)
  <snip>
    --executables           Run haddock for Executables targets
    --internal              Run haddock for internal modules and include all
                            symbols
  <snip>
Run Code Online (Sandbox Code Playgroud)

如果在没有该标志的情况下创建黑线鳕--internal,则hide模块属性无效:无论如何都不会为该模块创建任何文档。

如果--internal给出,则为非公开模块创建文档,指定该属性的模块除外hide。

换句话说,如果hide未设置且已--internal指定或导出模块,则会生成文档。

--internalfor的使用可以通过、 或手动调用时cabal haddock指定,或通过接口指定。cabal install --haddock-internalcabal haddockrunhaskell ./Setup.hs ...

大多数人只是cabal install使用默认选项运行,因此只有少数人会观察到差异。