Abstract: Several programming languages arising from widely diverse practical and theoretical considerations share a common high-level feature: their basic data type is an aggregate of other more primitive data types and their primitive functions operate on these aggregates. Examples of such languages (and the collections they support) are Fortran 90 (arrays), APL (arrays), Connection Machine LISP (xectors), Paralation Lisp (paralations), and SETL (sets). Acting on large collections of data with a single operation is the hallmark of data-parallel programming and massively parallel computers. These languages - which we call collection-oriented - are thus ideal for use with massively parallel machines, even though many of them were developed before parallelism and associated considerations became important. This paper examines collections and the operations that can be performed on them in a language-independent manner. It also critically reviews and compares a variety of collection-oriented languages with respect to their treatment of collections, gives many examples and code fragments from these languages, and elucidates certain problems that may arise when defining and implementing collection operations.
@article{sipelstein:blelloch:91, author = "Jay Sipelstein and Guy~E. Blelloch", title = "Collection-Oriented Languages", journal = "Proceedings of the IEEE", volume = 79, number = 4, pages = "504--523", month = apr, year = 1991 }