This course takes advantage of functional programming techniques in the design of domain-specific languages. In particular, it shows how to exploit GADTs and tagless-final type classes in the specification of the syntax, type system and semantics of embedded DSLs in Scala. Several examples of untyped and typed DSLs will be described, but the course will focus on the design of one or two DSLs identified beforehand. Some examples of languages that could be considered for the course are the following ones:
Although optimization techniques, higher-order DSLs, Quoted DSLs, and other advanced techniques on DSL design are out of the scope of this course, it covers enough material to be able to put into production well-founded, modular and most efficient embedded DSLs.
At the end of the course you should be able to:
This is an intermediate level course. In particular, it assumes familiarity with Scala and basic functional programming techniques: algebraic data types, higher-order functions and type classes. Nevertheless, a lightning introduction to these techniques will be provided at the beginning of the course.
Are you interested in this workshop?Buy now for Seattle Buy now for Madrid