Šablona Haskell - Template Haskell - Wikipedia
Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
Šablona Haskell je experimentální rozšíření jazyka do Haskell programovací jazyk implementovaný v Překladač Glasgow Haskell (verze 6 a novější). V raných inkarnacích byl také známý jako Template Meta-Haskell.
Umožňuje kompilaci metaprogramování a generativní programování pomocí manipulace abstraktní syntaxové stromy a 'sestřih „výsledky zpět do programu. Abstraktní syntaxe je reprezentována pomocí obyčejného Haskella typy dat a manipulace se provádějí pomocí běžného Haskella funkce.
'Kvazi-citát ' závorky [|
a |]
se používají k získání abstraktního stromu syntaxe pro uzavřený výraz a spojovací závorky $(
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 pomocí 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ýraz, proveďte nějakou transformaci výrazu a spojte výsledek zpět do programu. Mohlo by to být napsáno jako:
výsledek = $ (transformace [| vstup |])