Scala va agregar Macros a su lenguaje. Empecemos por el principio que sería Macros en los lenguajes de programación? Las macros son funciones que son llamadas por el compilador durante la compilación. Dentro de estas funciones, el programador tiene acceso a las API del compilador. Por ejemplo, es posible generar, analizar y código typecheck.
Esto era en C declarado mediante el #define, por ejemplo en C podemos hacer:
#define ADIOS "espero verte pronto"
En List podemos utilizar macros de la siguiente manera:
(defmacro Nand (&rest Args)
'(not (and ,@Args)))
Definimos la macro Nand y la podemos utilizar en nuestro programa.
Desde el release 2.10.0-M3 las macros son ahora oficialmente una parte del lenguaje Scala. Se puede importar Macros mediante el paquete language.experimental.macros.
Las Macros simplifican de forma significativa el análisis de código y generación de código, lo que los convierte en una herramienta de elección para un gran número de casos del mundo real. Los escenarios que tradicionalmente implican la escritura y el mantenimiento repetitivo se puede tratar con macros en forma concisa y fácil de mantener.
Dejo Link: