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.
Kris Jenkins is a former startup CTO who escaped the gloomy dungeons of management and fled into the ivory tower of functional programming. He now spends his time bulldozing OO slums to make room for new ivory accommodation.