Шаблон Haskell - Википедия - Template Haskell

Шаблон Haskell это экспериментальное расширение языка для Haskell язык программирования, реализованный в Компилятор Glasgow Haskell (версия 6 и новее). В ранних воплощениях он был также известен как Template Meta-Haskell.

Это позволяет во время компиляции метапрограммирование и генеративное программирование посредством манипулирования абстрактные синтаксические деревья и 'сращивание 'возвращаются в программу. Абстрактный синтаксис представлен с использованием обычного Haskell типы данных а манипуляции производятся с помощью обычного Haskell функции.

'Квази-цитата ' скобки [| и |] используются для получения абстрактного синтаксического дерева для заключенного выражения и скобок $( и ) используются для преобразования абстрактного синтаксического дерева в код.

Начиная с GHC-6.10, Template Haskell обеспечивает поддержку определяемых пользователем квазиквотеров, что позволяет пользователям писать синтаксические анализаторы, которые могут генерировать код Haskell из произвольного синтаксиса. Этот синтаксис также применяется во время компиляции. Например, используя собственный квазиквотер для обычные выражения может выглядеть так:

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

Пример

Распространенная идиома - цитировать выражение, выполните некоторое преобразование выражения и вставьте результат обратно в программу. Это можно было бы записать так:

результат = $ (преобразование [| ввод |])

внешняя ссылка