为什么Haskell解析注释?
我有一个非常简单的代码(在 GHC 8.10.4/ stack ghci17.12 中):
module T where
data D = A | B | C deriving (Eq, Show)
fn :: D -> Int
fn x =
case x of
A ->
-- | Test
1
B -> 2
C -> 3
关键是,我是否更换|由^或使用多线评论,我得到这个错误:
T.hs:9:7: error: parse error on input ‘-- | Test’
|
9 | -- | Test
| ^^^^^^^^^
解析器是否与我的评论与其他内容不匹配?或者是否有一种看起来像注释的特殊语法?
回答
注释以 开头--。以 开头-- |的注释是文档工具 haddock 的一种特殊注释,并且只允许在某些地方(并且您放置它的位置不是其中之一)。GHC 实际上接受您的代码。您构建程序的方式很可能涉及调用黑线鳕,它拒绝放错位置的-- |注释。
解决方案:--用于普通注释,而不是-- |用于黑线鳕的注释。
-- Test