Designing Domain-Specific Languages: A Comparison of Three Approaches by Example
summary
Compares three concrete DSL approaches: standalone languages like untyped Plutus Core (UPLC) used as a low‑level compilation target where the CEK evaluator fits on a napkin and gives a tiny, provable VM; embedded DSLs in Haskell (Plutarch, Copilot) that save tooling effort but force users to write AST‑manipulating code and rebuild DSL libraries; and subsets via compiler plugins exemplified by Plutus Tx subset implemented with a GHC compiler plugin, which produces plain Haskell‑style code and avoids meta‑programming noise while working only when a suitable host subset exists.
AI-written summary · about
chapters (11)
- 0:00Introduction to DSL design
- 2:19Standalone DSLs explained
- 8:48Example of standalone DSL: uplc
- 11:37Standalone DSLs for configuration
- 14:09Embedded DSLs introduction
- 17:40Example of embedded DSL: Plutarch
- 22:19Subsets of general purpose languages
- 25:10Compiler plugins for DSLs
- 29:33Example of subset DSL: Plutus TX
- 33:05Limitations of subset approach
- 35:12Q&A and summary
related talks
24mDesigning a DSL That Perfectly Solves Your Problem
53mDeveloping DSLs in a pragmatic way
25mFree without Pure: eDSL framework Plutarch
01h 01mChallenges in the Design and Implementation of Teaching Languages for EDSLs
01h 00mBuilding DSLs on Top of KernelF
27mCompositional Embeddings of Domain-Specific Languages
29mIntegrating Language Engineering into the Software Development Process
17mMacros for Domain-Specific Languages
