如果我接到电话
> { -# OPTIONS_GHC -fglasgow-exts -XTemplateHaskell #- }
在 .cabal 文件的文档部分(描述)中,我会收到错误消息
haddock: parsing haddock prologue failed
跑步时
$ cabal haddock
但如果我摆脱了{
,}
一切正常。有什么方法可以逃脱{}
,以便可以在描述中使用它们吗?
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!"
OPTIONS_GHC
它本身并没有被弃用(例如,您可以利用它来启用特定的构建选项),但使用它来打开/关闭语言功能并不被认为是好的做法。请改用{-# LANGUAGE ... #-}
编译指示。
例如{-# LANGUAGE TemplateHaskell, ForeignFunctionInterface, RankNTypes #-}
此外,使用包罗万象的-fglasgow-exts
. 最好只包含您需要的扩展,这样就可以更清楚地了解您的代码新手需要哪些扩展。