Template Haskell: dataToExpQ and constructor mis-match

I'm looking for a reliable way to turn values into Template Haskell expressions. I thought dataToExpQ from Language.Haskell.TH.Quote was the ticket, but it appears to produce constructors different from those produced by [| ... |], including [], (:), (), and (,). Here's an example run for (). I'm using template-haskell-2.5.0.0: GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help Prelude> import Data.Data Prelude Data.Data> import Language.Haskell.TH Prelude Data.Data Language.Haskell.TH> :set -XTemplateHaskell Prelude Data.Data Language.Haskell.TH> import Language.Haskell.TH.Quote Prelude Data.Data Language.Haskell.TH Language.Haskell.TH.Quote> u1 <- runQ (dataToExpQ (const Nothing) ()) Prelude Data.Data Language.Haskell.TH Language.Haskell.TH.Quote> u2 <- runQ [| () |] Prelude Data.Data Language.Haskell.TH Language.Haskell.TH.Quote> u1 ConE () Prelude Data.Data Language.Haskell.TH Language.Haskell.TH.Quote> u2 ConE GHC.Unit.() Prelude Data.Data Language.Haskell.TH Language.Haskell.TH.Quote> u1 == u2 False Any suggestions? -- Conal

On Tue, Jan 24, 2012 at 09:55:35AM -0800, Conal Elliott wrote:
I'm looking for a reliable way to turn values into Template Haskell expressions. I thought dataToExpQ from Language.Haskell.TH.Quote was the ticket, but it appears to produce constructors different from those produced by [| ... |], including [], (:), (), and (,).
I've fixed this in the HEAD. Thanks Ian
participants (2)
-
Conal Elliott
-
Ian Lynagh