In his talk at Functional Scala, London, Sergei Shabanau presents the concept of “invertible programs”, those that can convert input to result, and back - result to input.

He begins by defining exactly what it means for the program to be “invertible”, giving example of server and client defined together in one program, and then goes from the simplest possible example to a real-world application of invertibility.