Geobe is a geometric esoteric programming language interpreter written in Python. Programs are 2D grids of Unicode symbols where arrows control flow and shapes carry semantics.
Geobe programs are rectangular text grids. The interpreter finds every ○
source node and follows directional flow through the grid until a path ends.
The current MVP supports a single deterministic memory cell, input buffering,
output collection, and pluggable △ transforms.
Core symbols:
○read the next input value□store the current value in memory△transform the current value▲change/delta transform the current value▽append the current value to output◀append the current value to output▶traverse the current array by one index▶▶continue the current array loop, or finish when exhausted→,←,↑,↓move execution through the grid«... »read a literal string into the current valuespell ...decode triangle alphabet symbols into lowercase text output
Spaces are treated as empty cells for traversal. Other non-traversable characters stop a path.
The project targets Python 3.11+.
#cd into project root:
python3 -m pip install .Run a .geo file:
geobe examples/input_store_transform_output.geo --input helloRun inline source:
geobe --code "○→▽" --input helloRun a literal string program:
geobe --code "«hello, Geobe!»→▽"Read additional input values from standard input:
printf 'first\nsecond\n' | geobe --code "○→▽\n○→▽" --stdin-inputStart the interactive spelling console:
geobe --consoleIn console mode, lowercase letters are echoed as Geobe's mapped alphabet
symbols. Pressing Enter prints the English equivalent of the current line.
For example, typing hello! displays ▹▶▿▿◂!, then Enter prints hello!.
Trace execution as JSON:
geobe --code "○→□→▽" --input hello --traceTrace execution in readable text:
geobe --code "○→□→▽" --input hello --trace --trace-format textRunning the package module directly executes the built-in demo program:
python3 -m geobeexamples/input_store_transform_output.geo
○→□→△→▽With input hello, the program stores the value, applies the default identity
transform, and outputs hello.
Array loop:
○→▶→◀→▶▶With Python input [1, 2, 3], the program traverses the array and outputs
[1, 2, 3].
Spelled text:
spell ▹▶▿▿◂ ◮◂ ◣▿▵!This decodes to hello world! and outputs it.
Python code can also encode English into the triangle alphabet:
from geobe.parser import encode_spell_text
encoded = encode_spell_text("Hello world!")The △ symbol is backed by a transform registry. The default transform is
identity, and you can register your own behavior in Python code.
See examples/custom_transform.py for a minimal example that returns a custom
formatted value.
Run the test suite:
pytestRun linting and type checks:
ruff check .
mypy src testssrc/geobe/interpreter, parser, runtime state, and CLIexamples/documented sample programstests/coverage for the CLI, parser, interpreter, and examples
geobeCLI:geobe.cli:main- Module entry point:
python3 -m geobe