Šablona Haskell - Template Haskell
Template Haskell je experimentální jazykové rozšíření programovacího jazyka Haskell implementované v kompilátoru Glasgow Haskell (verze 6 a novější). V raných inkarnacích byl také známý jako Template Meta-Haskell.
Umožňuje metaprogramování v čase kompilace a generativní programování pomocí manipulace s abstraktními stromy syntaxe a ' sestřihem ' výsledků zpět do programu. Abstraktní syntaxe je reprezentována pomocí běžných datových typů Haskell a manipulace jsou prováděny pomocí běžných funkcí Haskell .
Závorky „ Quasi-quote “ [|a |]slouží k získání abstraktního stromu syntaxe pro uzavřený výraz a závorky „splice“ $(a )slouží k převodu z abstraktního stromu syntaxe do kódu.
Od verze GHC-6.10 poskytuje Template Haskell podporu pro uživatelsky definované kvazikotery, což uživatelům umožňuje psát analyzátory, které mohou generovat Haskellův kód z libovolné syntaxe. Tato syntaxe je také vynucena v době kompilace. Například použití vlastního kvazi-quoteru pro regulární výrazy může vypadat takto:
digitsFollowedByLetters = [$re| \d+ \s+ |]
Příklad
Běžným idiomem je kvazi-citace výrazu , provedení určité transformace výrazu a spojení výsledku zpět do programu. Mohlo by to být napsáno jako:
result = $( transform [| input |] )