Please log in to watch this conference skillscast.
A lifebuoy can save you when you have already fallen in the water, but it doesn't stop you falling in the water: it can help to protect you from the more serious consequences of your mistakes. A lamp helps you see what you are doing, but it doesn't stop you doing things: the extra information can help you avoid making mistakes. Types are often sold as a means to stop programmer errors becoming execution errors. In modern Haskell, that would rather understate their value, as I hope to demonstrate. Programming live, I shall show what you can achieve when you see types as an input to the program construction process (in which labour is shared with the compiler in helpful ways), rather than an output from type inference.
Is a type a lifebuoy or a lamp?
Dr Conor McBride runs the Mathematically Structured Programming group at the University of Strathclyde. He specialises in dependently typed programming. Over a decade ago. he was co-designer and implementer of Epigram. These days, while working on foundational innovations beyond advanced languages like Agda and Idris, he also engages keenly with the languages funcitonal programmers use for real work today. He is one of the people helping to drive the evolution of Haskell's type system towards ever greater expressivity.