1

我正在尝试使用表达式 quote编写声明,并且无论我尝试什么,编译器都会在模式上失败,并显示如下消息:

Parse error in pattern: $pattern

这是一个例子:

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
import Language.Haskell.TH

data A = A Int Int

decl :: DecsQ
decl = [d|
    instance Show A where
      show $pattern = undefined
  |]
  where
    pattern = conP (mkName "A") $ map varP $ map mkName $ ["a", "b"]
4

2 回答 2

4

TH 文档说:

请注意,不支持模式拼接

更多细节在这里

于 2013-11-01T16:09:22.653 回答
2

GHC HEAD (7.8-to-be) 改进了 TH 支持并成功编译您的代码。

于 2013-11-01T17:12:03.223 回答