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