xeno_by (xeno_by) wrote,
xeno_by
xeno_by

Let our powers combine!

Только что засабмитил паперу на воркшоп Scala 2013: http://scalamacros.org/news/2013/04/22/let-our-powers-combine.html.



Работа состоит из двух содержательных частей, не считая введения, быстрого знакомства с макросами и заключения. В первой части (Section 3) рассказывается про разные виды макросов (def macros, type macros, macro annotations), необходимость в которых проистекает из-за наличия в Скале синтаксиса, а также про их разновидности, возникающие на пересечении с тами или иными языковыми фичами. Во второй части (Section 4) рассматриваются сценарии использования макросов из первой части в сравнении с альтернативными подходами из других фреймворков и языков:
* Виртуализация языка
* Тайп провайдеры
* Автогенерация инстансов тайпклассов
* Упрощение программирования на уровне типов
* Интеграция с внешними доменно-специфическими языками
* Реализация новых языковых фич

Уважаемым читателям моего журнала папера может быть интересна в контексте обсуждений на следующие темы:
1) Вот я юзаю Скалу, и все ок. Зачем мне могут понадобиться макросы? (см. раздел 4. примеры там несколько ориентированы на академию, но большинство из них все равно взято из практики)
2) Зачем в Скале макросы, если уже есть scala-virtualized и LMS? (см. раздел 4.1)
3) В Скале слишком много фич, поэтому метапрограммирование там неоправданно усложнено (см. всю паперу на тему сценариев использования макросов, которые стали возможны благодаря тем или иным фичам Скалы)
4) Скале нужно метапрограммирование потому, что она недостаточно хорошо продумана (см. в принципе весь раздел 4, но в особенности 4.3 и 4.4, еще можно нагуглить технический отчет по Yin-Yang из списка литературы и почитать его)

В будущих работах я планирую рассказать про устройство нашей макросистемы (в этой папере я специально не вдавался в детали), а также обсудить трейдоффы в дизайне (сильно типизированные деревья или нет, раздельная компиляция или нет, какие API компилятора показывать наружу, а какие нет и так далее в таком духе).
Tags: macros, scala
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 27 comments