【问题标题】:Haddock: Document a declaration with inferred type signature?Haddock:用推断的类型签名记录声明?
【发布时间】:2011-12-31 05:20:42
【问题描述】:

考虑以下模块

{-# LANGUAGE RecordWildCards #-}
module Example (foo, fuh, fon, fuzz) where

import qualified FirstClassModule (Bar(foo,fuh,fon,fuzz), makeBar)

FirstClassModule.Bar {..} = FirstClassModule.makeBar parameter

parameter :: Int
parameter = 15

意图是模块FirstClassModule 提供了一个记录类型Bar,它的工作方式有点像一流的模块。然后,模块Example 实例化模块并使用 RecordWildCards 扩展将名称引入范围并使其可导出。

当您在此模块上运行 Haddock(2.8 版)时,它会干扰 foo 函数的类型签名并将它们包含在 API 文档中。现在,我的问题是:

有没有办法记录生成的名称 foofuh 等。Example 模块中写下它们的类型签名?

我不想编写类型签名,因为在这种情况下,因为它们是样板文件。如果我必须把它们写下来,这个模块就会失去它的存在理由

【问题讨论】:

    标签: haskell documentation-generation haddock


    【解决方案1】:

    来自 Haddock 用户手册:

    http://www.haskell.org/haddock/doc/html/markup.html#id564988

    请注意,Haddock 不包含 Haskell 类型系统——如果您不为函数编写类型签名,那么 Haddock 无法判断其类型是什么,并且不会包含在文档中。

    文档是 2.8 版的,2.9 版是最新的。

    【讨论】:

      【解决方案2】:

      实际上,我刚刚发现,从 2.9.2 版本开始,Haddock 将推断导出函数的类型签名。不幸的是,我似乎找不到用额外的文档来修饰它们的方法。

      例如模块

      module Test (foo) where
      
      foo = "bar"
      

      将产生类型签名

      foo :: String
      

      在文档中,但似乎我无法向其中添加任何文本。

      【讨论】:

      • 您现在可以在foo 上方添加黑线鳕评论,它会按预期工作。我知道这个答案已经过去了大约 2 年,但您可能想要更新它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 2022-08-10
      • 1970-01-01
      • 2019-06-29
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多