Vorlage Haskell - Template Haskell

Template Haskell ist eine experimentelle Spracherweiterung der im Glasgow Haskell Compiler (Version 6 und höher) implementierten Haskell- Programmiersprache . In frühen Inkarnationen war es auch als Template Meta-Haskell bekannt.

Es ermöglicht die Metaprogrammierung zur Kompilierungszeit und die generative Programmierung durch Manipulieren abstrakter Syntaxbäume und das Zurückspleißen von Ergebnissen in ein Programm. Die abstrakte Syntax wird unter Verwendung gewöhnlicher Haskell- Datentypen dargestellt, und die Manipulationen werden unter Verwendung gewöhnlicher Haskell- Funktionen durchgeführt .

' Quasi-Quote' -Klammern [|und |]werden verwendet, um den abstrakten Syntaxbaum für den eingeschlossenen Ausdruck und die' Splice'-Klammern abzurufen $(und )werden verwendet, um vom abstrakten Syntaxbaum in Code zu konvertieren.

Ab GHC-6.10 bietet Template Haskell Unterstützung für benutzerdefinierte Quasi-Quoter, mit denen Benutzer Parser schreiben können, die Haskell-Code aus einer beliebigen Syntax generieren können. Diese Syntax wird auch beim Kompilieren erzwungen. Die Verwendung eines benutzerdefinierten Quasi-Quoters für reguläre Ausdrücke könnte beispielsweise folgendermaßen aussehen:

digitsFollowedByLetters = [$re| \d+ \s+ |]

Beispiel

Eine übliche Redewendung besteht darin, einen Ausdruck quasi in Anführungszeichen zu setzen , eine Transformation für den Ausdruck durchzuführen und das Ergebnis wieder in das Programm zu integrieren. Es könnte geschrieben werden als:

result = $( transform [| input |] )

Externe Links