Szablon Haskella

Template Haskell to eksperymentalne rozszerzenie języka programowania Haskell zaimplementowane w kompilatorze Glasgow Haskell (wersja 6 i nowsze). We wczesnych wcieleniach był również znany jako Szablon Meta-Haskell.

Umożliwia metaprogramowanie w czasie kompilacji i programowanie generatywne poprzez manipulowanie abstrakcyjnymi drzewami składni i „ łączenie ” wyników z powrotem w program. Abstrakcyjna składnia jest reprezentowana przy użyciu zwykłych typów danych Haskella , a manipulacje są wykonywane przy użyciu zwykłych funkcji Haskella .

Nawiasy kwadratowe „ quasi- cytat” [| i |] są używane do uzyskania abstrakcyjnego drzewa składni dla załączonego wyrażenia, a nawiasy „splice” $( i ) są używane do konwersji z abstrakcyjnego drzewa składni na kod.

Począwszy od GHC-6.10, Template Haskell zapewnia obsługę quasi-cudzysłowów zdefiniowanych przez użytkownika, co pozwala użytkownikom pisać parsery, które mogą generować kod Haskella z dowolnej składni. Ta składnia jest również wymuszana w czasie kompilacji. Na przykład użycie niestandardowego quasi-cudzysłowu dla wyrażeń regularnych może wyglądać tak:

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

Przykład

Powszechnym idiomem jest quasi-cytowanie wyrażenia , wykonanie pewnej transformacji na wyrażeniu i wklejenie wyniku z powrotem do programu. Można to zapisać jako:

         wynik  =  $  (  przekształć  [  |  wejście  |  ]  ) 

Linki zewnętrzne