Directembedding: Concealing the Deep Embedding of DSLs
I just finished my semester project at LAMP, the lab that created the programming language Scala. The project introduced me to the world of Scala macros and compilers in general.
Macros expand at compilation time which forces you to think differently compared to when writing 'normal' code. The project involved developing Directembedding, a library for macro based direct embedding of DSLs. My contribution to the project was to add several new features and perform a case study. The case study was a lot of fun. I used the Directembedding library to implement slick-direct, a front-end for Slick.
For more details, read the technical report (PDF) or check out the presentation slides (PDF).