Imperative functional programming. Pages 71–84 of: Principles of programming languages (1993)

by Peyton Jones, L Simon, Philip Wadler