000186844 001__ 186844
000186844 005__ 20190416055815.0
000186844 020__ $$a978-1-4503-2064-1/13/07
000186844 0247_ $$2doi$$a10.1145/2489837.2489840
000186844 037__ $$aCONF
000186844 245__ $$aScala Macros: Let Our Powers Combine!
000186844 269__ $$a2013
000186844 260__ $$c2013
000186844 336__ $$aConference Papers
000186844 520__ $$aCompile-time metaprogramming has been proven immensely useful enabling programming techniques such as language virtualization, embedding of external DSLs, self-optimization, and boilerplate generation amongst many others. In the recent production release of Scala 2.10 we have introduced macros, an experimental facility which gives its users compile-time metaprogramming powers. Alongside of the mainline release of Scala Macros, we have also introduced other macro flavors, which provide their users with different interfaces and capabilities for interacting with the Scala compiler. In this paper, we show how the rich syntax and static types of Scala synergize with macros, through a number of real case studies using our macros (some of which are production systems) such as language virtualization, type providers, materialization of type class instances, type-level programming, and embedding of external DSLs. We explore how macros enable new and unique ways to use pre-existing language features such as implicits, dynamics, annotations, string interpolation and others, showing along the way how these synergies open up new ways of dealing with software development challenges.
000186844 6531_ $$aCompile-time Metaprogramming
000186844 6531_ $$aMacros
000186844 700__ $$g214505$$aBurmako, Eugene$$0246182
000186844 7112_ $$dJuly 2, 2013$$cMontpellier, France$$a4th Annual Workshop Scala 2013
000186844 773__ $$tSCALA '13 Proceedings of the 4th Workshop on Scala$$q3
000186844 8564_ $$uhttps://infoscience.epfl.ch/record/186844/files/2013-04-22-LetOurPowersCombine.pdf$$zPostprint$$s192384$$yPostprint
000186844 909C0 $$xU10409$$0252187$$pLAMP
000186844 909CO $$ooai:infoscience.tind.io:186844$$qGLOBAL_SET$$pconf$$pIC
000186844 917Z8 $$x214505
000186844 917Z8 $$x214505
000186844 917Z8 $$x148230
000186844 937__ $$aEPFL-CONF-186844
000186844 973__ $$rREVIEWED$$sPUBLISHED$$aEPFL
000186844 980__ $$aCONF