In this talk, I will show you how to create a programming language from scratch.

Programming languages are a large amount of our day to day work and, for some of us, our hobbies. And I am very much of the opinion that in order to fully understand our tools, we must be able to make them ourselves.
In this talk, I will show you how to create a programming language from scratch. You will come away from this with a deeper understanding of, and insights on, your tools. It will also teach you what you need to write powerful DSLs, which in my experience can be an absolute game changer when maintaining software whose purpose I'm not an expert on, but I do have access to experts.
In this talk we'll see how to model a tree structure in Scala, take both imperative and functional approaches to tree traversal algorithms, and do some ASCII art at the same time.
Scala 3.6 stabilises the Named Tuples proposal in the main language. It gives us new syntax for structural types and values, and tools for programmatic manipulation of structural types without macros. Can we, and should we, push it to the limit? Of course! let's explore DSL's for config, data, and scripting, for a more dynamic feel.
In this talk, I'll look at the different uses to which tagless final is put to, and see what we can learn about when it is useful and when it just gets in the way.