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

links externos