Embedding of external DSLs in Scala: why and how!


Detalles
Sooner or later, you'll find yourself wanting to create your own domain-specific language or embed an external DSL into your functional language of choice, i.e Scala ;). This presentation delves into the motivations behind this choice and offers practical guidance on how to achieve it. Specifically, it will demonstrate the implementation of the syntax, semantics, and type system of DSLs using the tagless-final style, along with some of the latest Scala 3 features: extension methods, Conversion type-class, match types, union types, polymorphic function types, and more. Real-world examples will be drawn from the Scala embedding of two fascinating external languages: the command-line JSON filtering language, jq, and the array programming language, q.
SPEAKER
Juan Manuel Serrano, associate professor at the University Rey Juan Carlos and co-founder of Habla Computing, a software architecture studio specialized in functional programming and kdb+/q.
HOST
Celonis will serve food and drinks after the talk. Celonis is the global leader in execution management. The Celonis Execution Management System provides companies a modern way to run their business processes entirely on data and intelligence. We pioneered the process mining category 10 years ago and continue to drive innovation towards our mission of helping companies change the way they work, so we can all do our part to ensure a better future for all.
Celonis is one of the fastest growing technology companies ever and we believe that we need to build the best teams to continue with a healthy growth. We currently have strong Engineering teams in Germany, Spain and the US, ranging work on frontend, backend, AI, Big Data and other related disciplines. We deal with Engineering challenges that need innovative solutions across our entire technology stack, from multi-cloud to database systems to real-time data streaming to our end-user experience. If you find it motivating to solve very tough challenges we might have an interesting opportunity for you.

Embedding of external DSLs in Scala: why and how!