Есть ли какой-нибудь учебник по Template Haskell для тех, кто не знает Lisp?

Я хотел изучить Template Haskell, но все учебные материалы, которые я нахожу, предполагают, что вы выучили lisp и знаете, что такое макросы lisp, или что вы знаете некоторый жаргон теории cs - такие вещи, как сращивания, квазиквотации и т. Д. - или некоторые теоретические результаты о макросах .

Я не могу закодировать ни одной строчки лиспа (и, хотя я собираюсь сделать это когда-нибудь, у меня нет времени изучать это прямо сейчас). Haskell - это мой самый первый функциональный язык, и я выучил его до такой степени, что могу регулярно кодировать на нем, использовать монады, аппликативность, понимать систему типов и т. Д., Но я мало что знаю (тоже хочу учиться, но я я слишком глуп для этого ...: P) о теоретических вещах, связанных с CS. Так что я не обращаю внимания на жаргон, который обычно нахожу в учебниках TH.

Итак, вопрос: есть ли учебник по TH для того, кто кодирует Haskell, не как профессиональный ученый-компьютерщик, а просто как парень, который использует программирование для своих повседневных дел, который изучил Haskell как свой первый функциональный язык? Может быть, введение в макросы и метапрограммирование на примере TH?

Спасибо всем. :)


person Rafael S. Calsaverini    schedule 20.04.2011    source источник
comment
На самом деле «сплайсинг» - это просто TH способ сказать генерация кода, а «квазиквотация» примерно соответствует синтаксическому анализу кода. Ничего страшно.   -  person Rotsor    schedule 20.04.2011


Ответы (3)


Нет, я не думаю, что есть отличные вводные руководства по Template Haskell. Лучший способ научиться - смотреть на примеры или:

Я никогда не считал, что Lisp является обязательным требованием, однако есть терминология, которую нужно выучить, как и для любой предметно-ориентированной библиотеки.

person Don Stewart    schedule 20.04.2011

Лучшие вводные руководства по Template Haskell, которые я знаю, - это два документа Булата Зиганшина. Ссылки из Haskell Wiki в настоящий момент кажутся неработающими, однако вы можете получить к ним доступ через archive.org:

person John L    schedule 20.04.2011

Также исходный документ Шаблон метапрограммирования для Haskell Тима Шеарда и Саймона Пейтона Джонса могут быть полезны:

Аннотация

Мы предлагаем новое расширение для чисто функционального языка программирования Haskell, которое поддерживает метапрограммирование во время компиляции. Целью системы является поддержка алгоритмического построения программ во время компиляции.

Возможность генерировать код во время компиляции позволяет программисту реализовывать такие функции, как разнотипные программы, макроподобное расширение, управляемая пользователем оптимизация (например, встраивание) и создание поддерживающих структур данных и функций из существующих структур данных и функций.

Наш проект реализуется в компиляторе Glasgow Haskell, ghc.

person Petr    schedule 24.03.2015