Uiua
Uiua is a stackbased array language emphasizing tacit programming, designed by Kai Schmidt. Initially influenced strongly by BQN, Uiua has added original stackbased features and glyphs and moved to the boxed array model of SHARP APL and J. It also makes functions secondclass rather than firstclass to facilitate features that depend on the number of arguments functions take.
Overview
Uiua uses concatenative evaluation (a contextfree grammar) with a righttoleft 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 (userdefined 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 length1 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.
Primitives
Functions with unique glyphs
In Uiua, we can type in the name of the function or a part of it and when formatted, it will format the name to its corresponding Unicode Symbol, so that we don't have to use nonASCII keyboards (or Altcodes).
The tables below are based on Uiua version 0.12.0, with sinceremoved primitives taken out.
Stack
Work with the stack
Glyph  Name  Type  Definition 

. 
Duplicate  Monadic 2output function  Duplicate the top value on the stack 
, 
Over  Dyadic 3output function  Duplicate the secondtotop value to the top of the stack 
: 
Flip  Dyadic 2output function  Swap the top two values on the stack 
โ 
Pop  Monadic 0output function  Discard the top stack value 
โ 
On  Monadic modifier  Call a function but keep its top argument on top of the stack 
โค 
But  Monadic modifier  Call a function but keep its last argument on top of the stack 
โค 
With  Monadic modifier  Call a function but keep its top argument below the outputs on the stack 
โธ 
By  Monadic modifier  Duplicate a function's last argument before calling it 
ยจ 
Backward  Monadic modifier  Call a function with its arguments reversed 
? 
Stack  Noadic 0output function  Debug print all stack values without popping them 
โธฎ 
Trace  Monadic function  Debug print the top value on the stack without popping it 
Constants
Push a constant value onto the stack
Glyph  Name  Definition 

ฮท 
Eta  The number of radians in a quarter circle 
ฯ 
Pi  The ratio of a circle's circumference to its diameter 
ฯ 
Tau  The ratio of a circle's circumference to its radius 
โ 
Infinity  The biggest number 
Monadic Pervasive
Operate on every element in an array
Glyph  Name  Definition 

ยฌ 
Not  Logical not 
ยฑ 
Sign  Numerical sign (1, ยฏ1, or 0) 
ยฏ 
Negate  Negate a number 
โต 
Absolute value  Get the absolute value of a number 
โ 
Sqrt  Take the square root of a number 
โฟ 
Sine  Get the sine of a number 
โ 
Floor  Round to the nearest integer towards ยฏโ

โ 
Ceiling  Round to the nearest integer towards โ

โ

Round  Round to the nearest integer 
Dyadic Pervasive
Operate on every pair of elements in two arrays
Glyph  Name  Definition  Formats from: 

= 
Equals  Compare for equality  = 
โ 
Not equals  Compare for inequality  != 
< 
Less than  Compare for less than  < 
> 
Greater than  Compare for greater than  > 
โค 
Less or equal  Compare for less than or equal  <= 
โฅ 
Greater or equal  Compare for greater than or equal  >= 
+ 
Add  Add values  + 
 
Subtract  Subtract values   
ร 
Multiply  Multiply values  * 
รท 
Divide  Divide values  % 
โฟ 
Modulus  Modulo values  mod 
โฟ 
Power  Raise a value to a power  pow 
โ 
Logarithm  Get the based logarithm of a number  log 
โง 
Minimum/Logical And  Take the minimum of two arrays (Can use for logical AND.)  min 
โฅ 
Maximum/Logical Or  Take the maximum of two arrays (Can use for logical OR.)  max 
โ 
Atangent  Take the arctangent of two numbers  atan 
โ 
Complex  Make a complex number from imaginary and real parts  com 
Monadic Array
Operate on a single array
Glyph  Name  Definition 

โงป 
Length  Get the number of rows in an array 
โณ 
Shape  Get the dimensions of an array 
โก 
Range  Make an array of all natural numbers less than a number 
โข 
First  Get the first row of an array 
โ 
Reverse  Reverse the rows of an array 
โญ 
Deshape  Make an array 1dimensional 
ยค 
Fix  Add a length1 axis to an array 
โฏ 
Bits  Encode an array as bits (LSBfirst) 
โ 
Transpose  Rotate the shape of an array 
โ 
Rise  Get the indices into an array if it were sorted ascending 
โ 
Fall  Get the indices into an array if it were sorted descending 
โ 
Where  Get indices where array values are not equal to zero 
โ 
Classify  Assign a unique index to each unique element in an array 
โด 
Deduplicate  Remove duplicate elements from an array 
โฐ 
Unique  Get a mask of the first occurrences of items in an array 
โก 
Box  Turn an array into a box 
Dyadic Array
Operate on two arrays
Glyph  Name  Definition 

โ 
Match  Check if two arrays are exactly the same 
โ 
Couple  Combine two arrays as rows of a new array 
โ 
Join  Append two arrays endtoend 
โ 
Select  Select multiple rows from an array 
โก 
Pick  Index a row or elements from an array 
โฏ 
Reshape  Change the shape of an array 
โ 
Rerank  Change the rank of an array's rows 
โ 
Take  Take the first n elements of an array 
โ 
Drop  Drop the first n elements of an array 
โป 
Rotate  Rotate the elements of an array by n 
โฎ 
Orient  Change the order of the axes of an array. 
โซ 
Windows  The nwise windows of an array 
โฝ 
Keep  Discard or copy some rows of an array 
โ 
Find  Find the occurrence's of one array in another 
โ 
Member  Check if each row of one array exists in another 
โ 
Indexof  Find the first index of each row of one array in another 
โ 
Coordinate  Find the first deep index of an array in another 
Iterating Modifiers
Iterate and apply a function to an array or arrays
Glyph  Name  Type  Definition 

โต 
Each  Monadic modifier  Apply a function to each element of an array or arrays. 
โก 
Rows  Monadic modifier  Apply a function to each row of an array or arrays. 
โ 
Table  Monadic 2argument modifier  Apply a function to each combination of rows of two arrays. 
โ 
Inventory  Monadic modifier  Apply a function to each unboxed row of an array and rebox the results. 
โฅ 
Repeat  Monadic modifier  Repeat a function a number of times 
โข 
Do  Dyadic modifier  Repeat a function while a condition holds 
Aggregating Modifiers
Apply a function to aggregate an array
Glyph  Name  Definition 

/ 
Reduce  Apply a reducing function to an array.
For reducing with an initial value, see 
โง 
Fold  Apply a function to aggregate arrays. 
\ 
Scan  Reduce, but keep intermediate values 
โ 
Group  Group elements of an array into buckets by index 
โ 
Partition  Group sequential sections of an array 
โน 
Triangle  Apply a function to each shrinking row of an array 
Inversion Modifiers
Work with the inverses of functions
Glyph  Name  Type  Definition 

ยฐ 
Un  Monadic modifier  Invert the behavior of a function 
โ 
Under  Dyadic modifier  Apply a function under another 
๐ Planet ๐ช
Advanced stack manipulation
Glyph  Name  Type  Definition 

โ 
Identity  Monadic function  Do nothing with one value 
โ

Gap  Monadic modifier  Discard the top stack value then call a function 
โ 
Dip  Monadic modifier  Temporarily pop the top value off the stack and call a function 
โฉ 
Both  Monadic 2argument modifier  Call a function on two sets of values 
โ 
Fork  Dyadic modifier  Call two functions on the same values 
โ 
Bracket  Dyadic modifier  Call two functions on two distinct sets of values 
Other Modifiers
Glyph  Name  Type  Definition 

โ 
Content  Monadic Modifier  Unbox the arguments to a function before calling it 
โฌ 
Fill  Dyadic Modifier  Set the fill value for a function 
โจฌ 
Switch  Dyadic modifier  Call the function at the given index 
External links
 Uiua on the concatenative language wiki
 Uiua, a Stackbased Array language on the Array Cast
 Documentation
 Interpreter
 Basic tutorial
APL dialectsโ[edit]  

Maintained  APL+Win โ APL2 โ APL64 โ APL\iv โ Aplette โ April โ Codfns โ Dyalog APL โ Dyalog APL Vision โ dzaima/APL โ GNU APL โ Kap โ NARS2000 โ Pometo 
Historical  A Programming Language โ A+ (A) โ APL# โ APL2C โ APL\360 โ APL/700 โ APL\1130 โ APL\3000 โ APL.68000 โ APL*PLUS โ APL.jl โ APL.SV โ APLX โ Extended Dyalog APL โ Iverson notation โ IVSYS/7090 โ NARS โ ngn/apl โ openAPL โ Operators and Functions โ PAT โ Rowan โ SAX โ SHARP APL โ Rationalized APL โ VisualAPL (APLNext) โ VS APL โ York APL 
Derivatives  AHPL โ BQN โ CoSy โ ELI โ Glee โ I โ Ivy โ J โ Jelly โ K (Goal, Klong, Q) โ KamilaLisp โ Lang5 โ Lil โ Nial โ RAD โ Uiua 
Overviews  Comparison of APL dialects โ Timeline of array languages โ Timeline of influential array languages โ Family tree of array languages 