Index  Comments

This is primarily a review of ISO/IEC 13751:2000 (E) ``Programming Language APL, Extended'', however this isn't the first APL document I'd read, which was ``APL An Interactive Approach Third Edition''. This latter book wasn't particularly noteworthy, but was important for giving me an idea of what APL is, this being necessary for reading the standards document that's quite incomprehensible otherwise.

There's not much to review, really; one needs to have an idea of APL and then to read this document. I printed and bound my copy of the standard, which greatly helps in reading and then referencing it.

Compared to the standards documents I've read regarding other languages, this for APL stood out as a particularly mathematical document in which everything is defined in the most general way, requiring one to step through the definitions using arguments of varying characteristics, particularly smaller ranks, to have any reasonable hope of understanding it. Though it's very rewarding when understood.

In the beginning there's a list of definitions used throughout the document, and despite its serious nature, the reader may be amused learning what a ``First-thingy'' is, as one example. Certain parts of the document will certainly and rightly be considered incomprehensible even to one experienced in reading the standard, including early descriptions of general but fundamental underlying algorithms.

I suggest to ignore the descriptions in these cases, and to focus primarily on that which noticeably touches the language, which begins with section seven. The remainder of this document is structured as definitions of language parts with helpful ``Informal Descriptions'' and ``Evaluation Sequences'' and often also examples showing how things would appear from an APL system. I found it necessary to evaluate many of the ``Evaluation Sequences'' using arrays of zero, one, followed by two dimensions, to have any hope of understanding them; many work with arbitrary dimensions, but understanding those isn't necessary to have a decent grasp of APL in the common case; ultimately, it's a long, fun read.

Importantly, this standard provides little help in interacting with certain pieces of an APL system, such as the tracing or ``debugging'' functionality, but it's not difficult generally to program sans such things, given an interactive system, and skulking around reveals their conventions and origins.

I recommend to all aspiring APL hackers GNU APL if for no other reason than a lack of other options.