:m +Language.Haskell.TH let { g1 :: Q Exp -> Q Exp; g1 x = x } let { g2 :: Name -> Q Exp; g2 x = return (VarE x) } let h x = x::Int $(g1 [| h |]) 5 $(g2 'h) 6