Haddock超链接,没有关于冗余导入的警告

时间:2012-02-02 13:26:32

标签: haskell haddock

我的项目中有一个虚拟模块,其唯一目的是为库的其余部分保存Haddock文档。事实上,我不需要 来导入此模块中的任何内容,但如果我不导入其他模块,Haddock不会将函数名称超链接到其模块。

我的模块看起来像这样

{- |

Lots of Haddock text here... it references 'someFunction'.

-}
module TopLevelDoc () where

import Other.Module.With.SomeFunction

现在,如果我构建项目,我会收到此警告:

    Warning: The import of `Other.Module.With.SomeFunction' is redundant
           except perhaps to import instances from `Other.Module.With.SomeFunction'
         To import instances alone, use: import Other.Module.With.SomeFunction()

如果我删除导入或将其()删除,Haddock不会将someFunction超链接到其文档。如果我按原样留下这样的进口,我会收到很多我不喜欢的错误警告。而且我不想为整个项目抑制这种警告,它可能对任何其他模块都有用,但是这个。

问题:

  1. 构建时,如何在没有此类警告的情况下获得超链接Haddock输出?
  2. 是否可以基于每个文件禁用警告? (就像我可以使用ghc-options
  3. 中的.cabal全局执行此操作

1 个答案:

答案 0 :(得分:7)

要使未使用的导入警告静音,您可以在文件顶部放置一个编译指示:

{-# OPTIONS_GHC -fno-warn-unused-imports #-}

您可以通过明确限定它们来链接到不在范围内的标识符:

  

通过提供实体的完全限定名称,也可以引用当前模块中不在范围内的实体:

-- | The identifier 'M.T' is not in scope
     

如果M.T不在范围内,那么Haddock将简单地发出指向从模块M导出的实体T的链接(不检查是否存在M或M.T)。

     

- The Haddock User Guide

但是,这可能会使您的文档源非常难看,并且模块资格不会从输出中删除,所以我建议改为关闭警告。