I'm not exactly sure what it is that you're trying to do with that code, but here's an approximation to that code which prints the Template Haskell representation of the type MyData: import Language.Haskell.TH import Monad data MyData = MyData1 | MyData2 main = do putStrLn $(liftM (LitE . stringL . show) [t|MyData|]) by the way -- does anyone happen to know why Q isn't an instance of Functor? It's obviously a functor by virtue of being a monad. - Cale On 12/09/05, Gracjan Polak <gracjan@acchsh.com> wrote:
Hi,
Probably very simple question about template haskell: How do I make a type for an argument to splice? Example:
data MyData = MyData1 | MyData2
mysplice mytype = [| litE $ stringL $ show mytype |]
main = do putStrLn $(mysplice MyData)
The above is not accepted, error:
Compiling Main ( thtest.hs, thtest.o )
thtest.hs:51:34: Not in scope: data constructor `MyData'
So how do I provide type as an argument?
Besides: documentation that I found for th is very dated. Could somebody point me to something more up to date about th? Thanks!
-- Gracjan
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe