Arnaud Bailly

Arnaud Bailly

Helping teams delivering better software at Pankzsoft
· Twitter · LinkedIn · Blog · Company Website ·
· Test and Type-Driven Design


Arnaud has been developing software and helping team develop softwares for nearly three decades, in various technologies, contexts and roles. He is interested in everything software-related with a peculiar passion for strongly-typed functional programming.

Test and Type-Driven Design (Lab)
by Arnaud Bailly

Test-Driven Design (or Development) is a well-known technique that uses "examples" to let the design of a piece of software emerge from the gradual refinement of features, providing evidence of the correct behaviour of the code through the execution of tests.

TDD is great, but, from a modelling perspective, it makes it hard to see the "big picture", to express properties of our domain elements in both a human-readable and machine-checkable form.

Modern type systems as exemplified in functional programming languages like Haskell, Elm, or Idris, are powerful tools to help design and model complex domains: A type can be more than a name or structure definition, it can embed properties of parts of a domain, in order to make impossible states unrepresentable.

The goal of this lab is to introduce the audience to some principles of Type-Driven Development, using features provided by functional programming languages like Haskell and Idris. After a short introduction to algebraic structures and dependent types, we will work on a small but interesting enough domain to model it using a few techniques and tools made possible by "advanced" type systems, hopefully improving both the robustness and the expressiveness of the code.

Join the mailing list

for updates about the DDD Europe Conference and workshops