Financial and insurance contracts do not sound like promising territory for functional programming and formal semantics, but in fact we have discovered that insights from programming languages bear directly on the complex subject of describing and valuing a large class of contracts.

We introduce a combinator library that allows us to describe such contracts precisely, and a compositional denotational semantics that says what such contracts are worth. We sketch an implementation of our combinator library in Haskell. Interestingly, lazy evaluation plays a crucial role.

A revised and updated version of this paper appeared as How to write a financial contract, a chapter in “The Fun of Programming”, ed Gibbons and de Moor, Palgrave Macmillan 2003.

Anton van Staten has a written a self-contained, well-documented Haskell library of composable contracts, which looks like a great resource if you want to try executing some contracts.