Uiua

Uiua is a stack-based array language emphasizing tacit programming, designed by Kai Schmidt. Initially influenced strongly by BQN, Uiua has added original stack-based features and glyphs and moved to the boxed array model of SHARP APL and J. It also makes functions second-class rather than first-class to facilitate features that depend on the number of arguments functions take.

Overview
Uiua uses concatenative evaluation (a context-free grammar) with a right-to-left ordering as in Polish notation. The language supports tacit programming using stack manipulation primitives, and all complex functions must be defined this way as there is no explicit function form that allows local variables. Functions have a fixed number of input and output values, meaning the overloading of ambivalent functions is removed. Because of this, Uiua often splits APL primitives into two functions. Its primitives use Unicode glyphs including many not found in other languages. To avoid typing glyphs necessitating a keyboard layout containing these, each primitive can also be spelled using a name that consists of lowercase letters (user-defined names must have at least one uppercase letter). By default, the language formats source files when run to convert these names into the corresponding glyphs.

Like the SHARP APL family, Uiua supports only flat arrays with a homogeneous type, and has a dedicated box type for array nesting. However, arithmetic is pervasive as in the nested array model. Arithmetic also follows leading axis agreement, extended so that a length-1 axis is matched with an axis of any length by replicating along it (like the broadcasting system of Julia and NumPy). It supports character arithmetic as in BQN, as well as other primitives characteristic of BQN such as structural Under, Classify, and a Transpose that rotates the axes of its argument by one.

Function with unique glyph
In the web version of Uiua, we can type in the name of the function or a part of it and when run, the interpreter will format the name to Unicode Symbol, so that we don't need use of non-ASCII keyboards.

All table below are based on Uiua version 0.8.0-1/28/2024.

Yellow background text indicates that the primitive is deprecated and will be removed in a future version, and 🧪 indicates a primitive that is experimental and may be changed or removed in the future.

Stack
Work with the stack

Constants
Push a constant value onto the stack

Monadic Pervasive
Operate on every element in an array

Dyadic Pervasive
Operate on every pair of elements in two arrays (Note that True is 1 and False is 0)

Monadic Array
Operate on a single array

Dyadic Array
Operate on two arrays

Iterating Modifiers
Iterate and apply a function to an array or arrays

Aggregating Modifiers
Apply a function to aggregate an array

Inversion Modifiers
Work with the inverses of functions

🌎 Planet 🪐
Advanced stack manipulation