Kris Jenkins

Types As Design Tools

Functional Systems Dev @ Clearer Code

Types As Design Tools

Types are much-discussed as a tool for correctness. Are they vital for a robust system, or has TDD made them obsolete? Do types help you write correct programs, or do they just restrict expressiveness?

What's not talked about nearly enough is how types are a window into your system's design. A good type system can reveal architectural secrets when you've barely even looked at the code. And it can reveal design flaws and opportunities for improvement at a glance - if you know how to look.

With a collection of examples gathered from real live systems, we'll look at how the type signatures of existing programs are trying to guide you to better designs.

Talk objectives:

  • See how types stand alone as a guide to better design.
  • Sharpen your intuition for 'good' type signatures.
  • Return to work with a new perspective on how to improve your code.

Target audience:

  • Some experience of any Functional Programming language.