sUTL
Language · guide · live runner

Programs shaped
like their data.

sUTL transforms maps, lists, strings, numbers, booleans, and null using transforms made from those same values. No parser, no hidden syntax—just portable, inspectable MLSNBN.

source → transform → result
{"name":"Ada"}

{"greeting":["&+","Hello, ","^$.name"]}

{"greeting":"Hello, Ada"}
82executable cases
79normative decisions
44Studio examples
44core declarations
Use sUTL

Install it in JavaScript, Python, or Go.

npm install sutl-js
python -m pip install sutl-py
go get github.com/emlynoregan/sutl-go@v1.0.0
Why sUTL?

A shared language for JSON-shaped systems

Read why sUTL →

The longer essay: from bOTL to sUTL →

01

Gather JSON

Requests, API responses, records, and configuration already meet as maps, lists, strings, numbers, booleans, and null.

02

Transform without effects

The host performs I/O; a sUTL evaluator receives chosen values and returns a value without ambient authority.

03

Move behaviour between hosts

Because transforms are JSON too, JavaScript, Python, Go, and other languages can store, send, and evaluate the same program.

Try it here

Learn the language by running it.

Interactive example: transform a name into a new document.