2013-04-03 34 views
7

有點困惑與我得到的結果。使用下列內容:使用「派生」時模板哈斯克爾錯誤

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 

我得到這個成功的結果:

Prelude Language.Haskell.TH> runQ [d| data X = X |] 
[DataD [] X_0 [] [NormalC X_1 []] []] 

但我得到這個錯誤:

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

我可以使用模板哈斯克爾時未得到展?

回答

7

看起來這是一個bug in GHC那是在7.6.1版本fixed

$ ~/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]] 
+0

我使用的是哈斯克爾平臺2012.4。猜猜我需要手動更新GHC或等待下一個大版本... – me2

+0

下一個大版本(2013.2)[預計在5月上半月](http://article.gmane.org/gmane.comp .lang.haskell.platform/2484)。 –