为什么 Haskell 解析注释?

Gli*_*ome 2 haskell syntax-error

我有一个非常简单的代码(在 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
Run Code Online (Sandbox Code Playgroud)

关键是,我是否更换|^或使用多线评论,我得到这个错误:

T.hs:9:7: error: parse error on input ‘-- | Test’
  |
9 |       -- | Test
  |       ^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

解析器是否与我的评论与其他内容不匹配?或者是否有一种看起来像注释的特殊语法?

Li-*_*Xia 10

注释以 开头--。以 开头-- |的注释是文档工具 haddock 的一种特殊注释,并且只允许在某些地方(并且您放置它的位置不是其中之一)。GHC 实际上接受您的代码。您构建程序的方式很可能涉及调用黑线鳕,它拒绝放错位置的-- |注释。

解决方案:--用于普通注释,而不是-- |用于黑线鳕的注释。

    -- Test
Run Code Online (Sandbox Code Playgroud)