[Haskell-cafe] Template Haskell and Types

Cale Gibbard cgibbard at gmail.com
Mon Sep 12 12:49:47 EDT 2005


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 at 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list