Sep 24, 2016: 2:00 - 2:25pm

Creating an approachable Haskell-like DSL

Jasper Van der Jeugt Fugue


At Fugue, we built our own statically typed DSL, Ludwig, to configure cloud infrastructure in a declarative way.

The DSL relates to the Haskell language in two ways. First, the language's compiler and toolchain are written in Haskell. Secondly, the DSL is heavily inspired by Haskell. It also borrows interesting features from other languages, such as extensible records with row-type polymorphism and an intuitive YAML-like syntax.

Having a Haskell-inspired functional language certainly made it possible to build powerful abstractions. However, this often come at a price. Many of our prospective users in DevOps have little or no experience in functional programming. This means that they frequently have a hard time understanding how these languages work.

This is a problem for adoption: we want people to look at our examples and immediately feel at home. This talk will focus on how we are trying to achieve that. We will talk about how we constructed the different aspects of the DSL (syntax, type system...) in such a way that anyone who is comfortable editing YAML can pick up the language easily.

Jasper Van der Jeugt

Jasper Van der Jeugt

Jasper is a Principal Engineer at Fugue, working primarily on tools related to domain-specific languages. He has been writing about and coding in Haskell ever since he started studying Computer Science at Ghent University. His interests include compilers, functional programming, skateboarding, open source software, and photography. He currently works remotely from Zürich, Switzerland.