Thomason and Polivka thoroughly explain an extension to Kenneth Iverson’s creative functional programming language, APL [1]. A prior understanding of APL is almost mandatory to understand APL2 in this book. This new dialect, APL2, supports a number of new features, most notably mixed data types and nested arrays. The book is designed to explain and teach APL2. It does the job admirably, with multiple problem sets per chapter and concise answers to each in an appendix. Other appendices will be helpful in using the book for reference.
For a language that requires thorough attention to meticulous detail, the book seems to be reasonably error-free. In fact, I found no errors that would be significant stumbling blocks. I would recommend the book to those who want to learn APL2.
In writing this review, it has been difficult to separate my thoughts on this well-written primer on APL2 from my impressions of the language itself. I am a strong supporter of the concepts and usage of APL, and I have even spoken to Ken Iverson about the language and the philosophy of its development. APL2 does not hold the same level of interest and utility for me, however. At my university, we regularly use APL as a model functional programming language in a course, despite APL’s complex symbol set and the keyboard assignment problems this leads to. However, replacing homogeneous data types with mixed data types in APL2 seems less motivated and less instructional. Nevertheless, for those with a working knowledge of APL, this book is a fine introduction to APL2, with concise but complete explanations and a carefully developed pedagogy.