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 に答える