
On 16 Jan 2011, at 03:58, Jan-Willem Maessen wrote:
Actually, the first presentation of M-structures is rather older than that. See Barth, Nikhil, and Arvind's FPCA '91 paper: http://portal.acm.org/citation.cfm?id=652538
The original formulation was indeed in terms of "take" and "put", though unconditional read and write primitives were prtty commonly used in Id programs. The take/put view can also usefully be thought of as a 1-element blocking channel.
The full spectrum of one-element communication protocols is set out in H R Simpson. The MASCOT method. Software Engineering Journal, 1(3):103– 120, March 1986. The notation was known as Real Time Networks. In this scheme, there are four types of protocol, each useful in different circumstances: blocking read, blocking write: a channel non-blocking read, blocking write: a constant blocking read, non-blocking write: a signal non-blocking read, non-blocking write: a pool The first of these, channel, corresponds to the MVar. The pool corresponds to an IORef. Regards, Malcolm