我无法使用haddock为haskell生成文档。
到目前为止,我还没有找到任何有用的例子。该文档有很多选项,我也不确定注释语法,以便正确生成文档。
我知道在ghci中我可以调用:bro用于加载文件,它列出了类型和函数,我希望这些函数可以用haddock记录,即使没有注释。我不知道这是否可能。
答案 0 :(得分:3)
如果您构建可执行文件,例如
module Main (main) -- this line is implicit if your module isn't named otherwise
where
-- | Some important function that does most of the work
foo :: Bar -> Baz
foo = ...
-- Other definitions
-- ...
-- | The program you want to run.
main :: IO ()
main = ...
-- ...
然后Haddock认为实际上没有任何公开的文件 - 毕竟,main
是使用该项目的人唯一可以接听的,其他一切都被隐藏了!
要生成foo
的文档,您需要直接从Main
模块或其最初定义的其他模块导出它。通常的方法是将一切真正有趣的东西放在一些“内部”模块中,比如
module Foo (foo, {- other stuff ... -}) where
-- | Some important function that does most of the work
foo :: Bar -> Baz
foo = ...
-- Other definitions
-- ... but not `main`
并且对于可执行文件仅使用“最终用户防刮塑料包装”模块
module Main (main) where
import Foo
main :: IO ()
main = ...
然后Foo
的文档将包含实际有趣的Haskell API Haddocks。这将是
富
foo
::Bar
- >Baz
执行大部分工作的一些重要功能
实际上,您希望编写类似
的文档-- | Transmogrify a bare bar into a zapcutted one
foo :: Bar -- ^ The bare input to transmogrify
-> Baz -- ^ The zapcutted wrimch
产生类似
的文档富
foo
::
Bar
transmogrify的裸输入- >
Baz
zapcutted wrimch将裸杆变形为zapcutted
Main
的Haddock并不是很有趣,您最好将这些信息放在命令行帮助框中。
在project.cabal
文件中,您需要将Foo
归类为属于项目的“库”部分,而Main
是可执行部分。
基本上,Haddock仅适用于库,而不适用于可执行文件。