Я только заметил, что Scala имеет макросы, но я никогда не видел никакого кода, который их использует. Они также кажутся совершенно отличными от макросов препроцессора C и тому подобного. Прочитав макросы overview, похоже, что они предлагают что-либо, что ранее не было возможно в Scala. Под заголовком мотивации есть список того, что позволяют макросы:
- Виртуализация языков (перегрузка/переопределение семантики оригинальный язык программирования для обеспечения глубокого внедрения DSL),
- Обогащение программ (предоставление программам средств для проверки их собственный код),
- Самооптимизация (самоприменение специфичных для домена оптимизация на основе переопределения программ),
- Алгоритмическая программа (генерация кода, который утомительно писать с помощью абстракции, поддерживаемые языком программирования).
Позже в меню есть экспериментальные макрофункции, такие как макросы типа, квазикварталы, нетипизированные макросы и даже больше. Ясно, что есть спрос на это!
Все это похоже на приятные функции для людей, которые строят очень сложные библиотеки с сильным пониманием Scala. Но делают ли макросы что-то для среднего разработчика Scala тоже? Будет ли использование макросов лучше сделать код Scala?