~/talk

Teaching Domain Specific Languages in Scala

Talkat Scala Days 2023 Seattle · 2023-06-05..06-07· [scala, documentation]
slides:none on file

Course-style report on teaching DSLs using Scala 3 that shows concrete tools, assignments and outcomes: covers external DSLs with parser combinators (Parsley/parboiled discussion), internal DSLs via extension methods, symbolic operators and fluent builders, and Scala 3 metaprogramming using quotes/splices to generate compile‑time checks (examples: four‑letter command literals, duplicate initial‑state errors). Students implement parser+semantic model, optional generative macros, and VS Code integration via Scala.js for VS Code extensions (breadcrumbs, rename, go‑to, code lenses). Expect demos, library choices, and one or two high‑effort student projects per year.

AI-written summary · about

  1. 0:00Introduction
  2. 1:25What are DSLs
  3. 2:51External DSLs and workbenches
  4. 3:55Focus on internal DSLs in Scala
  5. 5:42Teaching Scala via domain modeling
  6. 7:08Security system domain model
  7. 9:57Semantic models in Scala
  8. 11:04External DSLs with combinators
  9. 12:28Parsing DSL syntax and semantics
  10. 14:15Advanced Scala features
  11. 15:41Internal DSLs and fluent APIs
  12. 16:22Operator overloading and extensions
  13. 18:11Builder patterns and fluency
  14. 19:16Call-by-name and guards
  15. 20:39Contextual abstractions
  16. 22:47Generative DSLs and metaprogramming
  17. 24:10Macros for compile-time DSLs
  18. 26:19Rewriting syntax to semantic model
  19. 28:50Type-dependent assertions
  20. 30:39Type providers for DSLs
  21. 32:29Advanced assertion DSL
  22. 33:11IDE support for external DSLs
  23. 35:03Scala.js with VS Code
  24. 37:13Language features in VS Code
  25. 38:41Summary and synergies
  26. 39:43Limitations and future
  27. 40:45Q&A
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.