Š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 |] )

externí odkazy