8

如果我接到电话

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

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

haddock: parsing haddock prologue failed

跑步时

$ cabal haddock

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

4

2 回答 2

3

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

不幸的是,Cabal 似乎从@-delimited 块中去除了前导空格,因此您还必须在任何带有空格的行前面加上 HTML 编码的空格 

这是一个例子:

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

呈现为:

我的包带有代码示例!

{-# LANGUAGE TemplateHaskell #-}

main = do
    $templatePrint "hello!"
    $templatePrint "hello!"
于 2012-03-21T03:25:11.533 回答
2

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

例如{-# LANGUAGE TemplateHaskell, ForeignFunctionInterface, RankNTypes #-}

此外,使用包罗万象的-fglasgow-exts. 最好只包含您需要的扩展,这样就可以更清楚地了解您的代码新手需要哪些扩展。

于 2011-06-22T12:58:59.153 回答