黑線鱈的文檔,如果我在.cabal文件的文件部分(介紹)行{}在.cabal在哈斯克爾
> { -# OPTIONS_GHC -fglasgow-exts -XTemplateHaskell #- }
我會得到錯誤信息
haddock: parsing haddock prologue failed
運行
$ cabal haddock
的時候,但如果我擺脫{
和}
一切工作正常。有什麼方法可以逃脫{}
,以便它們可以在描述中使用?
黑線鱈的文檔,如果我在.cabal文件的文件部分(介紹)行{}在.cabal在哈斯克爾
> { -# OPTIONS_GHC -fglasgow-exts -XTemplateHaskell #- }
我會得到錯誤信息
haddock: parsing haddock prologue failed
運行
$ cabal haddock
的時候,但如果我擺脫{
和}
一切工作正常。有什麼方法可以逃脫{}
,以便它們可以在描述中使用?
OPTIONS_GHC
本身並未被棄用(例如,您可以利用它來啓用特定的構建選項),但使用它來打開/關閉語言功能並不被認爲是一種好的做法。改用{-# LANGUAGE ... #-}
編譯指示。
例如{-# LANGUAGE TemplateHaskell, ForeignFunctionInterface, RankNTypes #-}
此外,利用包含所有功能的-fglasgow-exts
被認爲是不正確的形式。最好只包含你需要的擴展,這樣對於任何新加入你的代碼的人來說都是很清楚的。
這是很好的建議,但它甚至沒有試圖回答這個問題。 – 2012-12-17 12:23:59
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!"
看起來你實際上不能在域中{}。我閱讀了解析器,並且似乎沒有任何用於轉義表示Cabal文件中的非縮進敏感區域的{}的預覽。 (順便說一句,是不是「OPTIONS_GHC」棄用?可能更好地說'{ - #LANGUAGE TemplateHaskell# - }'。) 我尋找的人試圖對Hackage這樣做的例子,我發現的是大概)你的嘗試。也許將剪切粘貼代碼移動到不同的文件中......或者對解析器進行非向後兼容的更改: – jrockway 2010-08-29 20:47:28
哦,是的,我使用'test-framework-th',我找出了什麼樣的編譯指示我在描述中沒有詳細說明,所以也許文檔是不必要的。:) – jrockway 2010-08-29 20:48:33
@jrockway:謝謝。我只會使用'(...)'而不是'{...}'。 – finnsson 2010-08-31 12:38:24