Connection Machine Lisp: fine-grained parallel symbolic processing

Connection Machine Lisp is a dialect of Lisp extended to al- low a fine.grained, data-oriented style of parallel execution. We introduce a new data structure, the xapping, that is like a sparse array whose elements can be processed in parallel. This kind of processing is suitable for implementation by such fine.grained parallel computers as the Connection Machine System and NON- VON. Additional program notation is introduced to indicate var- ious parallel operations. The symbols st andare used, in a manner syntactically reminiscent of the backquote notation used in Common Lisp, to indicate what parts of an expression are to be executed in parallel. Ths symbol fl is used to indicate permu- tation and reduction of sets of data. Connection Machine Lisp in practice leans heavily on APL and FP and their descendants. Many ideas and stylistic idioms can be carried over directly. Some idioms of Connection Machine Lisp are difficult to render in APL because Connection Machine Lisp xappings may be sparse while APL vectors are not sparse. We give many small examples of programming in Connection Machine Lisp. Two metcircular interpreters for a subset of Connection Ma- chine Lisp are presented. One is concise but suffers from defining a in terms of itself in such a way as to obscure its essential prop- erties. The other is longer but facilitates presentation of these properties.

[1]  Kenneth E. Iverson,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).

[2]  John C. Reynolds,et al.  Definitional Interpreters for Higher-Order Programming Languages , 1972, ACM '72.

[3]  Leonard Gilman,et al.  APL, an interactive approach , 1974 .

[4]  Gerald Jay Sussman,et al.  An Interpreter for Extended Lambda Calculus , 1975 .

[5]  Susan S. Owicki,et al.  Axiomatic Proof Techniques for Parallel Programs , 1975, Outstanding Dissertations in the Computer Sciences.

[6]  J. W. Backus,et al.  Can programming be liberated from the von Neumann style , 1977 .

[7]  David Gries An exercise in proving parallel programs correct , 1977, CACM.

[8]  Gerald Jay Sussman,et al.  The Revised Report on SCHEME: A Dialect of LISP. , 1978 .

[9]  Gerald Jay Sussman,et al.  The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two) , 1978 .

[10]  Jr. Guy L. Steele,et al.  Rabbit: A Compiler for Scheme , 1978 .

[11]  Trenchard More The nested rectangular array as a model of data , 1979, APL '79.

[12]  D. L. Orth,et al.  Development of an APL standard , 1979 .

[13]  A. Falkoff,et al.  Development of an APL standard , 1979, APL '79.

[14]  D. A. Turner The semantic elegance of applicative languages , 1981, FPCA '81.

[15]  Trenchard More,et al.  Rectangularly arranged collections of collections , 1982, APL '82.

[16]  M. A. Jenkins,et al.  Array diagrams and the Nial approach , 1982, APL '82.

[17]  Tom Duff,et al.  Compositing digital images , 1984, SIGGRAPH.

[18]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

[19]  John McCarthy,et al.  Queue-based multi-processing LISP , 1984, LFP '84.

[20]  Norman I. Adams,et al.  The Revised Revised Report on Scheme or An Uncommon Lisp , 1985 .

[21]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[22]  W. Daniel Hillis,et al.  The connection machine , 1985 .

[23]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..