使用"派生"时模板Haskell错误

me2*_*me2 7 haskell template-haskell

与我得到的结果有点混淆.使用以下内容:

GHCi, version 7.4.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> :m + Language.Haskell.TH
Run Code Online (Sandbox Code Playgroud)

我得到了这个成功的结果:

Prelude Language.Haskell.TH> runQ [d| data X = X |]
[DataD [] X_0 [] [NormalC X_1 []] []]
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Prelude Language.Haskell.TH> runQ [d| data X = X deriving Show |]

<interactive>:4:30:
    The exact Name `X' is not in scope
      Probable cause: you used a unique name (NameU) in Template Haskell but did not bind it
    In the Template Haskell quotation [d| data X = X deriving (Show) |]
    In the first argument of `runQ', namely
      `[d| data X = X deriving (Show) |]'
    In the expression: runQ [d| data X = X deriving (Show) |]
Run Code Online (Sandbox Code Playgroud)

使用Template Haskell时我无法导出Show?

Mik*_*kov 7

看起来这是一个在GHC错误这是固定在7.6.1版本:

$ ~/bin/ghc-7.6.1/bin/ghci
GHCi, version 7.6.1: http://www.haskell.org/ghc/  :? for help
[...]
Prelude> :set -XTemplateHaskell
Prelude> import Language.Haskell.TH
Prelude Language.Haskell.TH> runQ [d| data X = X deriving (Show) |]
[...]
[DataD [] X_0 [] [NormalC X_1 []] [GHC.Show.Show]]
Run Code Online (Sandbox Code Playgroud)