Yin-Yang: Concealing the Deep Embedding of DSLs (Most Influential Paper)
summary
Framework automatically translates user-friendly shallow EDSL programs to fast deep EDSLs using Scala macros and a type-translation scheme that guarantees reliable lifting and optional eager inlining. Generated deep embeddings remove boilerplate for DSL authors and feed backends like LMS or a C code generator for a query engine. Evaluations report about 5–6× runtime improvements, up to 12× reduction in generated code size, and successful use in Slick, Squid and an analytical query compiler.
AI-written summary · about
chapters (15)
- 0:00Paper introduction
- 0:44Paper origins
- 2:31Definitions of domain specific languages
- 4:36External vs embedded DSLs
- 6:22Shallow vs deep embedding
- 8:50Deep embedding purpose
- 11:01Yin-Yang core insight
- 12:28Translation mechanisms
- 16:12DSL interification
- 19:48DSL restrictions and errors
- 21:13Benefits for developers
- 22:39Applications of Yin-Yang
- 24:28Summary
- 25:11Q&A: Scala features
- 27:01Q&A: Type conversions
related talks
44mFunctional Interpreters and You
22mDesign DSLs with xDSL
23mAnyDSL: A Partial Evaluation Framework for Programming High-Performance Libraries
42mAvoiding macros with inline and derived
17mMacros for Domain-Specific Languages
35mPractical Normalization by Evaluation for EDSLs
24mDesigning a DSL That Perfectly Solves Your Problem
01h 01mChallenges in the Design and Implementation of Teaching Languages for EDSLs
