Właśnie zauważyłem, że Scala ma makra, ale nigdy nie widziałem żadnego kodu, który je wykorzystuje. Wydają się również zupełnie różnić od makr preprocesora C i tym podobnych. Po przeczytaniu makr nie wyglądało na to, że oferują coś, co wcześniej nie było możliwe w Scali. Pod nagłówkiem motywacji, tam znajduje się lista rzeczy, które makra umożliwiają:Scala macros, gdzie są one używane?
- Język wirtualizację (Imax/nadrzędne semantykę oryginalnym języku programowania na włączyć głębokie osadzenie DSL),
- Program reifikacja (dostarczanie programów ze środków wglądu do swoich własny kod),
- Samooptymalizacja (samo stosowanie specyficznych domen optymalizacje na podstawie programu reifikację)
- algorytmiczne programu (generowanie kodu, który jest żmudny w pisaniu z abstrakcjami obsługiwanych przez język programowania).
Później w menu, istnieją eksperymentalne funkcje makro, takie jak makra typu, quasiquotes, bez typu makr i jeszcze więcej. Oczywiście istnieje na to popyt!
Wszystkie te wydają się być fajnymi funkcjami dla osób, które budują bardzo wyrafinowane biblioteki z silnym zrozumieniem Scali. Ale czy makra oferują coś także dla przeciętnego programisty Scala? Czy użycie makr sprawi, że mój kod Scala będzie lepszy?
Można również zapoznać się z naszą najnowszą papieru, który przedstawia niektóre z interesujących zastosowań makr: http://scalamacros.org/ paperstalks/2013-04-22-LetOurPowersCombine.pdf. –
Oto dedykowany artykuł witryny doc: http://docs.scala-lang.org/overviews/macros/usecases.html –