2014-01-05 42 views
4

假设我有一个名为MyModule一个Haskell模块,进口的外部模块是这样的:阿道克 - 链接到外部模块功能(整个模块导入)

import ModuleA hiding (a, b, c) 

不能修改此import语句,因为该程序不完全是我的。

我想链接到ModuleA的文档中的ModuleA.external_function,在上面的注释中称为my_function。因此,代码看起来是这样的:

-- | my_function makes use of 'ModuleA.external_function' 
my_function :: Int -> Int 

用黑线鳕2.10.0和运行cabal haddock,链接ModuleA.external_functiondist/doc/html/MyModule/ModuleA.html#v:external_function产生。但是,问题是dist/doc/html/MyModule/ModuleA.html文件不存在。

如何生成指向ModuleA的文档的链接,而不是module-A-package/docs/ModuleA.html#v:external_function。换句话说,类似于http://hackage.haskell.org/package/text-0.11.2.0/docs/Data-Text.htmlString类型(它们链接到http://hackage.haskell.org/package/base-4.5.0.0/docs/Data-String.html#t:String)的链接有什么相似之处?请记住,我不能修改import声明。

谢谢。

+1

你的问题有点不清楚。无论如何,如果你在范围内有'ModuleA.someFunction',那么''ModuleA.someFunction''应该可以正常工作。看看你生成的路径,看起来'ModuleA'在它自己的目录中,实际上你可能不会导出它。如果没有导出,Haddock将不会为其生成文档。并不是所有的东西都会因为这种情况而丢失,因为你可以将'--ignore-all-exports'传递给Haddock。当使用'cabal haddock'时,可以使用'--haddock-options'来传递它。或者,在'MyModule'中放置'{ - #OPTIONS_HADDOCK ignore-exports# - }',看看是否这样做。 –

回答

0

要在Haddock文档中建立到外部软件包的链接,您需要指示它在哪里找到这些软件包的文档

这是通过使用--read-interface Haddock命令行选项完成的。使用

您的例子,这将是:为包使用----dump-interface黑线鳕命令行选项模块-A-包生成文档时

haddock --read-interface module-A-package/docs/,module-A-package/docs/module-A-package.haddock 

.haddock文件由。

有关更多信息,请参阅the Haddock documentationthis HaskellWiki page