Being a metaprogramming aficionado, Eugene believes that metaprogramming can be applied to mainstream programming in a safe and disciplined way. Since fall 2011, as a member of the Scala team and Martin Odersky's PhD student, he has been realizing this vision in the Scala macros project. Before joining EPFL he was experimenting with metaprogramming for CLR. Eugene's projects in this area include Relinq, a bidirectional LINQ to JavaScript transformer, and Conflux, a library that crosscompiles C# into CUDA.

Denys is the author of Scala 2.11's quasiquotes, a project aimed at making AST manipulation a pleasure. He is also an active contributor to scala/scala repository, hacking on compiler internals, reflection API and macros. At the moment he works as intern at Typesafe researching ways to introduce referential transparency and hygiene concepts to Scala compiler and macro system.

This workshop is going to be a follow-up for my "What Are Macros Good For?" talks at ScalapeƱo and Scala eXchange. The talks introduced a number of popular macro techniques that tackle code generation, static checks and DSLs, focusing on high-level design and omitting implementation details. The workshop will be dedicated to implementation details of some of those techniques, identifying potential pitfalls and providing solutions and explanations.

Questions that attendees are going to be able to answer after attending the workshop:

Knowledge that will help with getting up to speed during the workshop: