Date: Tue, 27 Apr 1993 08:38:34 +0100
From: Simon L Peyton Jones
People reading the update-notation thread might also be interested in
"Imperative functional programming"
Peyton Jones & Wadler, POPL 93
The paper mainly deals with I/O and updatable arrays, but the same
technology allows other update-in-place data structures too. It is
all implemented in the Glasgow Haskell compiler.
I highly recommend Simon's paper, too. I should also mention that
in Yale Haskell we have implemented a very general interface to
Common Lisp similar to what the Glasgow folks have done for C.
Using it we have implemented a completely functional interface to
the CL-X library (X-windows), for example.
But, it should be understood that NEITHER of these techniques makes
any "guarantees" about in-place updateability -- i.e. the burden is
completely on you, the programmer, and if you're not careful you can
destroy referential transparency. The purpose of the paper that I
referred to in my previous message is to show (i.e. prove) when the
idea works and when it doesn't, and to give a translation mechanism
to derive new axioms from the old. I don't know of any work similar
to this.
-Paul