Although multicomputers are becoming feasible for solving large problems, they are difficult to program: Extraction of parallelism from scalar languages is possible, but limited. Parallelism in algorithm design is difficult for those who think in von Neumann terms. Portability of programs and programming skills can only be achieved by hiding the underlying… (More)
This paper gives a simple introduction to the concepts of Function Rank and the Rank Operator as they are defined in SHARP APL, and presents examples of their use. It shows the benefits, both in language design and in practice, of these concepts. Comparisons are made with other APL implementations, which do not use these concepts.
a prototype APL to C compiler (<italic>ACORN</italic>: APL to C On Real Numbers) was produced while investigating improved tools for solving numerically intensive problems on supercomputers. <italic>ACORN</italic> currently produces code which runs slower than hand-coded Cray FORTRAN, but we have identified the major performance bottlenecks, and believe we… (More)
A functional enclose operator, which returns the scalar representation of a function, is introduced. By providing a scalar representation of a function, functional enclose provides capabilities similar to those of SHARP APL Packages. When used in conjunction with the formatting function, functional enclose supplants (@@@@)cr. Apply is defined as a proper… (More)
Gerunds, verbal forms that can be used as nouns, are recognized as having utility in the realm of programming languages. We show that gerunds can be viewed as arrays of atomic representations of verbs (functions), in a way which is consistent with the syntax and semantics of APL, and which allows verbs to be first class objects in the language. We define… (More)
This article describes how <i>array predicates</i> were used to reduce the computational complexity of four APL primitive functions when one of their arguments is a permutation vector. The search primitives, <i>indexof</i> and set membership, and the sorting <i>primitives,</i> upgrade and downgrade, execute in linear time on such arguments. Our… (More)