Tim Humphries


Software engineer at Ambiata

I’m a software engineer based in Sydney, Australia.
I’m interested in building reliable software, quickly.
I focus on cheap assurance techniques.
That means types, immutability, property testing, code review, and communication.
I work primarily in the Haskell programming language, though I have dabbled in systems work in the past. I also use a bit of Purescript at work, plus copious amounts of shell.

YOW! Lambda Jam 2017 Sydney

Continuations All the Way Down


This talk will demonstrate the use of continuation-passing style to solve common and eternal practical problems in Haskell. It aims to illustrate that a range of seemingly magical techniques are comprised of little more than judicious use of CPS, changing the structure of constructed expressions without affecting their meaning.

Whether you’re tackling classic inner-loop optimisations like difference lists (DList) or builders, reshaping the spine of an expression to manage lazy side effects, or using the Codensity transform to improve the asymptotics of your free monad, it’s continuations all the way down.

The aim of this talk is to provide some visual and practical intuition for difference lists, then deconstruct scary pieces of jargon until they look like difference lists. We gain some concrete intuition for CPS, and controlled lazy evaluation. We demonstrate that many advanced concepts are little more than an accretion of simple, powerful techniques, of which lambda is the ultimate.