I&#39;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&#39;s an example run for (). I&#39;m using template-haskell-2.5.0.0:<br>

<br>    GHCi, version 7.0.4: <a href="http://www.haskell.org/ghc/">http://www.haskell.org/ghc/</a>  :? for help<br>    Prelude&gt; import Data.Data<br>    Prelude Data.Data&gt; import <a href="http://Language.Haskell.TH">Language.Haskell.TH</a><br>

    Prelude Data.Data <a href="http://Language.Haskell.TH">Language.Haskell.TH</a>&gt; :set -XTemplateHaskell<br>    Prelude Data.Data <a href="http://Language.Haskell.TH">Language.Haskell.TH</a>&gt; import Language.Haskell.TH.Quote<br>

    Prelude Data.Data <a href="http://Language.Haskell.TH">Language.Haskell.TH</a> Language.Haskell.TH.Quote&gt; u1 &lt;- runQ (dataToExpQ (const Nothing) ())<br>    Prelude Data.Data <a href="http://Language.Haskell.TH">Language.Haskell.TH</a> Language.Haskell.TH.Quote&gt; u2 &lt;- runQ [| () |]<br>

    Prelude Data.Data <a href="http://Language.Haskell.TH">Language.Haskell.TH</a> Language.Haskell.TH.Quote&gt; u1<br>    ConE ()<br>    Prelude Data.Data <a href="http://Language.Haskell.TH">Language.Haskell.TH</a> Language.Haskell.TH.Quote&gt; u2<br>

    ConE GHC.Unit.()<br>    Prelude Data.Data <a href="http://Language.Haskell.TH">Language.Haskell.TH</a> Language.Haskell.TH.Quote&gt; u1 == u2<br>    False<br><br>Any suggestions?<br><br>-- Conal<br><br>