GNU APL is a cross platform APL interpreter.
The APL interpreter is an (almost) complete implementation of ISO standard 13751 aka. Programming Language APL, Extended.
The APL interpreter has implemented:
- nested arrays and related functions
- complex numbers, and
- a shared variable interface
In general, it follows IBM's APL2 implementation. For a wonderful introduction to APL2, refer to APL2 At A Glance, by Brown, Pakin & Polivka.
Those who are studying APL would do well to contrast GNU APL with Dyalog APL, a proprietary implementation that is actively developed by its namesake company, which has diverged from APL2 in some respects. Many examples nowadays which are found online use Dyalog operators and syntax extensions; to understand the differences refer to this discussion of APL "evolution" or "migration" levels and how they affect the meaning of certain operators: Mix (up arrow) in GNU APL?
The most important difference between APL2 and Dyalog APL is that Dyalog supports point-free (also called 'tacit') syntax, which GNU APL / APL2 does not support. However, with some basic knowledge of APL2 and how Dyalog differs, programs can be translated from one to the other with minimal effort.