[Haskell-cafe] [Probably a dumb question] Quasiquoting

Robert Greayer robgreayer at yahoo.com
Tue Mar 31 14:58:22 EDT 2009


Andrew Coppin wrote:
| Is there some reason why you can't have antiquoting with normal TH?
| 
| I'm just trying to make sure I've understood QQ correctly...

With TH, it might not be necessary (depending on the situation)...

> {-# OPTIONS_GHC -XTemplateHaskell #-}
> module QT where
>
> import Language.Haskell.TH
>
> foo s = $([| "hello " ++ s |])

The TH quotation builds a TH expression (of type Q Exp) in which there is a variable 's' which is free.  Since it's spliced into a context that happens to bind an 's', it compiles...

But you can also splice into your quotes:

> bar s = $(let v = varE (mkName "s") in [| "hello " ++ $v |])


      


More information about the Haskell-Cafe mailing list