Modelo Haskell - Template Haskell
Modelo Haskell é uma extensão da linguagem experimental ao Haskell linguagem de programação implementada no Glasgow Haskell Compiler (versão 6 e posterior). Em primeiras encarnações ele também era conhecido como Modelo Meta-Haskell.
Ele permite que em tempo de compilação metaprogramming e programação generativa , por meio de manipulação de árvores de sintaxe abstrata e ' splicing resultados' de volta para um programa. A sintaxe abstrata é representado usando Haskell comuns tipos de dados e as manipulações são realizadas utilizando Haskell comuns funções .
' -Quote Quasi ' suportes [|e |]são usados para obter a árvore de sintaxe abstrata para a expressão fechada e suportes 'emenda' $(e )são usados para converter de árvore de sintaxe abstrata em código.
A partir do GHC-6.10, Modelo Haskell fornece suporte para quase-quoters definidos pelo usuário, o que permite aos usuários escrever analisadores que podem gerar código Haskell de uma sintaxe arbitrária. Esta sintaxe também é aplicada em tempo de compilação. Por exemplo, usando um costume quase quoter para expressões regulares poderia ser assim:
digitsFollowedByLetters = [$re| \d+ \s+ |]
Exemplo
Uma expressão comum é quasi-citação de uma expressão , executar alguma transformação na expressão e emendar o resultado de volta para o programa. Pode ser escrita como:
result = $( transform [| input |] )