The Toast system provides automated support for buttering toast. Jam and marmalade are also supported. It is the best thing since sliced bread.

Toast exploits functional programming in two ways. First, buttering styles are described by the user in Spread, a small functional language based on so-called spread combinators. Algebraic laws are applied to optimise the buttering process. Second, Toast is implemented in the higher-order lazy functional language Haskell.

Also see the Toast home page.