Tacit definition
Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission. ~ 1991 ACM 0-89791 -441-4/91 /0008/0202 ...$1 .50
The derivative operator
This paper defines a single derivative operator which, together with certain related operators, provides a coherent treatment of many aspects of the derivative including the Jacobian, Laplacian, gradient, divergence, and curl. Working models of all operators are provided in a set of APL functions.
A commentary on APL development
Because A Dictionary of APL [1] was designed for concise and convenient reference, it is important that it be supplemented by other treatments of the language, concerning matters such as style and literacy [2], discussion of the means used to eradicate anomalies that have crept into the language [3], illustrations of analytic uses of the language [4], and explorations of the uses of particular verbs, adverbs , and conjunctions [5]. The present paper Ireats the rationale for many of the less familiar facilities defined in the dictionary, rectifies the definition of rank, provides simpler definitions for the con-juctions denoted by cup and cap, and discusses the matter of treating sets and set-like operations. The order of treatment parallels that of the dictionary. Although some of the facilities in APL have been introduced in response to demands from programmers, most have been motivated by knowledge of their utility in some branch of mathematics. Moreover, they have invariably been generalized from the special cases on which they were based. For example, reduction, inner product, and outer product were not demanded by programmers and are still not demanded by programmers in other languages. Moreover, although they were suggested by the sigma notation, by the malrix product of linear algebra, and by the outer product of tensor analysis, it is the generalization of these ideas that has made them fruitful in general programming. The exploitation of these facilities has been a long process of discovery by programmers, discovery often impeded by the fact that the implementation of a given construct might well remain too inefficient for serious use until the discovery of its utility motivated more efficient implementation. Reductions and inner products on boolean functions provide a case in point. The motivation for the newer verbs and adverbs defined in the dictionary remains largely mathematical, and the process of discovery and exploitation continues. For example, programmers have taken to the rank adverb, and its efficiency in the Sharp APL implementation has already been shaiply improved by embodying its treatment within individual primitive verbs. If the development of APL is to benefit fully from experience in use, it is essential that the process be slow and conservative. Early examples of this conservative approach (such as the adoption of notation for the circular functions) occur in Section 4 of Evolution of APL [6], and the "The Story of 0"[7]. A more recent example will now be …