Как стать автором
Обновить

Комментарии 5

А вы слышали о wiki.haskell.org/Template_Haskell? Посмотрите примеры использования:

Если хочется чего-то вроде RoR — обратите внимание на www.yesodweb.com. Если sinatra — github.com/scotty-web/scotty.
UPD На хабре есть даже целый цикл статей: habrahabr.ru/search/?q=%5BTemplate%20Haskell%5D&target_type=posts
Тоже хотел об этом написать. Зачем генерить Haskell через mustache конкатенацией текста, если можно делать это через тот же Haskell, оперируя синтаксическим деревом?

Кроме того, генератор из статьи является злым волшебником — после генерации мы сами отвечаем за поддержку кода, исправление ошибок в шаблонах потребует перегенерации кода или ручных исправлений. С Template Haskell такой проблемы нет.
Генерация кода при помощи шаблонов mustache — это не конкурент Template Haskell, а параллельный инструмент. Мне он нужен в тех случаях, когда надо сделать быстрый начальный набросок, который позже все равно буду дорабатывать вручную. То, что я сгенерил код для сущностей из БД, не говорит о том, что он останется именно таким. Вероятно я внесу еще какие-то изменения, например, в SQL или в логику. Эти изменения достаточно трудно предвидеть в макросах, но легко можно дописать вручную, имея некоторую заготовку.

Кроме того, прочтите внимательно статью, на которую сами же дали ссылку. Они там не против wizard-ов, они против бездумного их использования.
Кроме того, прочтите внимательно статью, на которую сами же дали ссылку.

Я читал всю книгу дважды :) Похоже, я просто привёл не совсем правильный участок. Там есть раздел Code Generators (#20) об активной/пассивной кодогенерации, который я не смог найти на сайте. Рекомендовалось по возможности отдавать предпочтение генератору, который встраивается в процесс сборки (активному), а не запускается единоразово (пассивному). Пассивные генераторы в основном и ассоциировали со злыми волшебниками, потому я и промахнулся отрывком.

параллельный инструмент

Да, согласен, TH и кодогенерация вполне могут сосуществовать.

Кстати, в python-инфраструктуре задачу, похожую на вашу (генерация приложений, контроллеров, моделей, etc.), решает PasteScript.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории