GNU APL, short for GNU A Programming Language, is a free and open-source implementation of APL created by the GNU Project in 2005. GNU APL provides a command-line interpreter for writing and executing APL programs on Unix-like systems, including Linux and macOS. It can be downloaded and installed via the official source at GNU APL Official Site, or through system package managers such as apt install gnu-apl on Debian/Ubuntu or brew install gnu-apl on macOS.

GNU APL exists to provide a free, standards-compliant environment for exploring array-oriented programming with the concise notation of APL. Its design philosophy emphasizes faithful adherence to the APL standard, interactive exploration of arrays, and efficient execution of mathematical and analytical operations.

GNU APL: Scalars and Vectors

GNU APL treats both scalars and vectors as arrays, supporting operations that apply across all elements simultaneously.

⎕ ← numbers ← 1 2 3 4 5
⎕ ← vector ← 10 20 30

Scalars are handled as single-element arrays, and vectors represent sequences. Operations automatically broadcast across arrays for concise computation.

GNU APL: Functions and Reduction

Functions and operators in GNU APL use symbols like +, -, ×, ÷, and reduction operators such as / to manipulate arrays.

sum ← +/ numbers        ⍝ sum reduction
squared ← {⍵*2} numbers  ⍝ element-wise square
⎕ ← sum
⎕ ← squared

Reduction and pointwise functions enable rapid, compact calculations across entire datasets without explicit loops.

GNU APL: Conditional Logic

Conditional operations use comparison operators like =, , >, < and can filter or select array elements.

mask ← numbers > 3
selected ← numbers / mask
⎕ ← selected

This allows selection and manipulation of data subsets in a vectorized, array-oriented manner.

GNU APL: Nested Functions and Tacit Programming

GNU APL supports nested functions and tacit (point-free) style programming for concise, composable operations.

dot ← +/ .×/ matrix ⍵
⎕ ← dot 1 2 3

Nested functions enable complex array transformations and calculations with minimal explicit syntax, maintaining the expressive power of APL.

GNU APL is used in scientific computing, data analysis, and educational environments. It can interoperate with other array-oriented tools such as J, PyAPL, and Dyalog APL, providing a versatile platform for learning, experimentation, and high-level numerical computation.