如何在表达式引用中编写模式拼接?

时间:2013-11-01 13:49:03

标签: haskell template-haskell

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

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"]

2 个答案:

答案 0 :(得分:4)

TH文档说:

  

请注意,不支持图案拼接

更多详情here

答案 1 :(得分:2)

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