talks
|
works
Uiua A Life
October 6, 2025
Kyoto, Japan
Press D to download as a PDF and F to toggle presentation mode. Navigate up and down with K and J when presenting
UIUA A LIFE
Noah Syrkis
October 6, 2025
1 |
Motivation
2 |
Glyphs
3 |
The Stack
4 |
Examples
1 |
Motivation
For legacy reasons, ALife research tend to use Python. This talk presents an alternative: Uiua, a
stack based array language written in Rust, inspired by APL. Uiua’s array orientedness and visual
compactness makes it a winner (for me), and it’s already been used for neuroevolutiuon
[1]
(lambda x, y, z: x + y + z)
+ +
Python
Uiua
Listing 1: Two implementations of an anonymous function that adds three numbers
1 of
8
2 |
Glyphs
Uiua uses special symbols (glyphs). In the context of LLMs, glyph-based languages could become very
efficient since the same code can be generated with much fewer tokens. A few common glyphs are:
.
:
ₙ
⚂
⇡
⧻
⌊
⌵
≡
duplicate
flip
power
random
range
shape
floor
abs
map
Listing 2: A few common glyphs
2 of
8
2 |
Glyphs
Some glyphs are more high-level. To visualize points, you could use
⍜
(under), which transforms,
applies a function, and undoes transform, on an
𝑛
×
𝑛
array of zeros, by selecting the index of the
particles in the array (transform), adding 1 (function), and putting the values back in the array.
∧ fold
⍜ under
≡ rows
Apply a function to aggregate
arrays
Operate on a transformed ar
ray, then undo transform
Apply a function to each row
of an array
∧+ [1 2 3] 10
→
16
⍜+(×2) 1 5
→
11
≡∧+ [1_2 4_5] 0
→
3_9
Listing 3: Glyphs with descriptions and examples
3 of
8
3 |
The Stack
▶
Functions pop and push values on the stack
▶
Functions apply seamlessly across array dims
1 2 3 # stack: 1 2 3
+ + # stack: 6
⇡ # stack: [0 1 2 3 4 5]
+ 1 # stack: [1 2 3 4 5 6]
\+ # stack: [1 3 6 10 15 21]
/+ # stack: 56
4 of
8
4 |
Examples
ALife examples in Uiua include neuroevolution
[1]
, an implementation of Lenia
[2]
, a game engine
[3]
, and boids
[4]
, demonstrating its range from abstract models to interactive systems.
5 of
8
4.1 |
RHOS
R ← ⁿ:e ¯÷ ×2 ⁿ2 : √ /+ ⁿ2 ⌵
G ← ≡₁R ⌵ - ⌊ ÷ 2 ⊸ ⧻ ⇡ ⊟ .
D ← ÷ ⊸⍥/↥ 2 √ ⌵ - ⊸ ↻ 0_1
Figure 1: Two works from RHOS
6 of
8
4.2 |
Sortsol
Figure 2: 200 steps of a simple particle simulation
with particles moving randomly
Init ← + ÷ 2 W × S - 0.5 gen N_2
Step ← + × S -0.5 gen N_2
Draw ← ⍜(⊡|+1) ↥ 0 ↧ -1 W ⌊ : × 0 °△ W_W
7 of
8
References
[1]
Kai Schmidt, “Evonet: Basic Evolutionary Neural Network in Uiua.” 2025.
[2]
donstenzel, “Lenia: Time, Space & State Continuous Cellular Automaton in Uiua.” GitHub, Sep.
2025.
[3]
M. Cat, Omnikar, and Ronondex2009, “Iris: A Simple Game Library around Rayua.” GitHub,
Sep. 2025.
[4]
marblecoma, “Boids in Uiua Using Iris Library.” GitHub, Sep. 2025.
8 of
8
UIUA A LIFE
Noah Syrkis
October 6, 2025
1 |
Motivation
2 |
Glyphs
3 |
The Stack
4 |
Examples
1 |
Motivation
For legacy reasons, ALife research tend to use Python. This talk presents an alternative: Uiua, a
stack based array language written in Rust, inspired by APL. Uiua’s array orientedness and visual
compactness makes it a winner (for me), and it’s already been used for neuroevolutiuon
[1]
(lambda x, y, z: x + y + z)
+ +
Python
Uiua
Listing 1: Two implementations of an anonymous function that adds three numbers
1 of
8
2 |
Glyphs
Uiua uses special symbols (glyphs). In the context of LLMs, glyph-based languages could become very
efficient since the same code can be generated with much fewer tokens. A few common glyphs are:
.
:
ₙ
⚂
⇡
⧻
⌊
⌵
≡
duplicate
flip
power
random
range
shape
floor
abs
map
Listing 2: A few common glyphs
2 of
8
2 |
Glyphs
Some glyphs are more high-level. To visualize points, you could use
⍜
(under), which transforms,
applies a function, and undoes transform, on an
𝑛
×
𝑛
array of zeros, by selecting the index of the
particles in the array (transform), adding 1 (function), and putting the values back in the array.
∧ fold
⍜ under
≡ rows
Apply a function to aggregate
arrays
Operate on a transformed ar
ray, then undo transform
Apply a function to each row
of an array
∧+ [1 2 3] 10
→
16
⍜+(×2) 1 5
→
11
≡∧+ [1_2 4_5] 0
→
3_9
Listing 3: Glyphs with descriptions and examples
3 of
8
3 |
The Stack
▶
Functions pop and push values on the stack
▶
Functions apply seamlessly across array dims
1 2 3 # stack: 1 2 3
4 of
8
3 |
The Stack
▶
Functions pop and push values on the stack
▶
Functions apply seamlessly across array dims
1 2 3 # stack: 1 2 3
+ + # stack: 6
4 of
8
3 |
The Stack
▶
Functions pop and push values on the stack
▶
Functions apply seamlessly across array dims
1 2 3 # stack: 1 2 3
+ + # stack: 6
⇡ # stack: [0 1 2 3 4 5]
4 of
8
3 |
The Stack
▶
Functions pop and push values on the stack
▶
Functions apply seamlessly across array dims
1 2 3 # stack: 1 2 3
+ + # stack: 6
⇡ # stack: [0 1 2 3 4 5]
+ 1 # stack: [1 2 3 4 5 6]
4 of
8
3 |
The Stack
▶
Functions pop and push values on the stack
▶
Functions apply seamlessly across array dims
1 2 3 # stack: 1 2 3
+ + # stack: 6
⇡ # stack: [0 1 2 3 4 5]
+ 1 # stack: [1 2 3 4 5 6]
\+ # stack: [1 3 6 10 15 21]
4 of
8
3 |
The Stack
▶
Functions pop and push values on the stack
▶
Functions apply seamlessly across array dims
1 2 3 # stack: 1 2 3
+ + # stack: 6
⇡ # stack: [0 1 2 3 4 5]
+ 1 # stack: [1 2 3 4 5 6]
\+ # stack: [1 3 6 10 15 21]
/+ # stack: 56
4 of
8
4 |
Examples
ALife examples in Uiua include neuroevolution
[1]
, an implementation of Lenia
[2]
, a game engine
[3]
, and boids
[4]
, demonstrating its range from abstract models to interactive systems.
5 of
8
4.1 |
RHOS
R ← ⁿ:e ¯÷ ×2 ⁿ2 : √ /+ ⁿ2 ⌵
G ← ≡₁R ⌵ - ⌊ ÷ 2 ⊸ ⧻ ⇡ ⊟ .
D ← ÷ ⊸⍥/↥ 2 √ ⌵ - ⊸ ↻ 0_1
Figure 1: Two works from RHOS
6 of
8
4.2 |
Sortsol
Figure 2: 200 steps of a simple particle simulation
with particles moving randomly
Init ← + ÷ 2 W × S - 0.5 gen N_2
Step ← + × S -0.5 gen N_2
Draw ← ⍜(⊡|+1) ↥ 0 ↧ -1 W ⌊ : × 0 °△ W_W
7 of
8
References
[1]
Kai Schmidt, “Evonet: Basic Evolutionary Neural Network in Uiua.” 2025.
[2]
donstenzel, “Lenia: Time, Space & State Continuous Cellular Automaton in Uiua.” GitHub, Sep.
2025.
[3]
M. Cat, Omnikar, and Ronondex2009, “Iris: A Simple Game Library around Rayua.” GitHub,
Sep. 2025.
[4]
marblecoma, “Boids in Uiua Using Iris Library.” GitHub, Sep. 2025.
8 of
8