Template Haskell is an extension to HaskellLanguage that allows you to do type-safe compile-time meta-programming, with Haskell both as the manipulating language and the language being manipulated.
From http://www.haskell.org/th/ BrokenLink 16 February 2010. Available through WaybackMachine at http://web.archive.org/web/20080504113632/www.haskell.org/th/. -- MarnenLaibowKoser
See also http://www.haskell.org/haskellwiki/Template_Haskell
It is included in the GlasgowHaskellCompiler.
Template Haskell is a dangerous tool; it can generate unexpected side-effects even at complication time. It can also be used to break the encapsulation offered by module boundaries, to gain access to protected type constructors and thus to break the module's invariants, causing previously safe code to fail. For these reasons, Template Haskell is disabled in SafeHaskell.
See also HygienicMacros DataAndCodeAreTheSameThing
CategoryProgrammingLanguage FunctionalProgrammingLanguage CategoryHaskell