如果我得到了这条线
> { -# OPTIONS_GHC -fglasgow-exts -XTemplateHaskell #- }
在.cabal文件的文档部分(描述)中我将收到错误消息
haddock: parsing haddock prologue failed
运行时
$ cabal haddock
但如果我摆脱{
和}
一切正常。有没有办法逃脱{}
,以便可以在描述中使用它们?
答案 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
被视为不良形式。最好只包含您需要的扩展,这样对于任何刚接触您的代码的人来说都更加清晰。