DSLs in Racket: You Want It How, Now?
summary
Proposes a taxonomy of seven design intents and maps them to concrete Racket mechanisms, splitting enabling techniques into reader and expander customization. Empirical analysis of 30 Racket DSLs shows most keep Racket syntax but not overwhelmingly so, about two thirds expose macro support, and roughly ≈40% reinterpret implicit forms (custom module-begin or other implicit forms). Classifies readers as default/extended/custom/hybrid and expander choices as default bindings, phase-1 bindings, custom bindings and implicit forms, and provides artifacts and code to reproduce the study.
AI-written summary · about
chapters (16)
- 0:00DSLs in Racket
- 1:11Clickomania game engine
- 3:18Custom syntax in DSLs
- 4:21Language design intents
- 5:43Custom semantics in DSLs
- 6:49Import/export control
- 7:54Macro support in DSLs
- 8:37Syntactic embeddability
- 9:39Interoperability with Racket
- 10:01Static checking
- 11:04Reader customization
- 13:14Expander customization
- 15:43Popular Racket DSLs
- 17:48Conclusion
- 18:31Q&A
- 20:00Design decisions
related talks
45mLanguage-Oriented Programming with Racket
17mMacros for Domain-Specific Languages
01h 01mChallenges in the Design and Implementation of Teaching Languages for EDSLs
01h 03mModern Macros
09mOn Teaching Type Systems as Macros (Lightning Talk)
37mMetaprogramming + DSL Design in Elixir
01h 00mBuilding DSLs on Top of KernelF
35mDesigning Domain-Specific Languages: A Comparison of Three Approaches by Example
