在Haskell中的Haddock文档的.cabal中的{}

时间:2010-08-29 20:10:16

标签: haskell cabal haddock

如果我得到了这条线

> { -# OPTIONS_GHC -fglasgow-exts -XTemplateHaskell #- }

在.cabal文件的文档部分(描述)中我将收到错误消息

haddock: parsing haddock prologue failed

运行时

$ cabal haddock

但如果我摆脱{}一切正常。有没有办法逃脱{},以便可以在描述中使用它们?

2 个答案:

答案 0 :(得分:3)

Haddock有两种代码块语法 - 用@分隔块的语法允许你使用HTML转义,它可以用来嵌入Cabal解析器无法处理的字符。

不幸的是,似乎Cabal从@ - 分隔的块中删除了前导空格,因此您还必须在空格前添加带有HTML编码空间 的空格。

这是一个例子:

description:
  My package with a code example!
  .
  @
  {-\# LANGUAGE TemplateHaskell \#-}
  .
  main = do
      $templatePrint "hello!"
      $templatePrint "world!"
  @

呈现给:

  

我的包含代码示例!

{-# LANGUAGE TemplateHaskell #-}

main = do
    $templatePrint "hello!"
    $templatePrint "hello!"

答案 1 :(得分:2)

OPTIONS_GHC本身并未弃用(例如,您可以利用它来启用特定的构建选项),但使用它来打开/关闭语言功能并不是一种好习惯。请改用{-# LANGUAGE ... #-}编译指示。

e.g。 {-# LANGUAGE TemplateHaskell, ForeignFunctionInterface, RankNTypes #-}

此外,利用无所不包的-fglasgow-exts被视为不良形式。最好只包含您需要的扩展,这样对于任何刚接触您的代码的人来说都更加清晰。