pootis
| Paradigm(s) | imperative |
|---|---|
| Designed by | Pablo "Octadrius" Blanco |
| Appeared in | 2025 |
| Memory system | Stack-based |
| Dimensions | one-dimensional |
| Computational class | Turing complete (?) |
| Major implementations | Original |
| Influenced by | BASIC brainfuck COBOL Assembly Expression 2 |
| File extension(s) | .txt |
Pootis script, or just pootis, is an esolang (delusionally) designed after the TF2 jokes and lore.
Language overview
The language operates on single line instructions, which tell the interpreter what to do. They are mostly based on TF2 sentences or concepts.
Variables can be declared with the poot instruction, which takes a number as an
argument. Variables can only be named as positive integers.
Procedures can be declared using the erectin command, and they'll have their own
stack frame on call.
Basic instructions:
| Instruction | Description |
|---|---|
poot
|
Declares a variable |
dispense
|
Assigns a value to a variable |
erectin
|
Starts the procedure block |
built
|
Signals the end of a procedure block |
note
|
A comment, which can be printed or not |
teleport
|
Declares a target label or jumps like a traditional goto
|
jump
|
Skips the next line if the conditions are met |
heal
|
Increments a variable, or appends a string |
shoot
|
Decrements a variable, or prepends a string |
use
|
Calls a procedure |
medic
|
Imports another pootis module |
There are other instructions like class is dead, message. to abort the program, and other directives like the briefcase is safe that control the verbosity.
pootis is the only built-in procedure, the rest must be bound by hand using place sentry procName. An example of a large binding file can be found at cc.txt in the project page
Examples
Hello World
This program prints out Hello World!
pootis { "Hello World!" }
Basic Loop
This program illustrates the basic looping operation, since there are no for or while structures.
note Example of a loop:
poot 1
dispense "10" in 1
teleport exit
jump if 1 isn't "0"
teleport down
pootis{"i = ", 1}
shoot "1" to 1
teleport up
teleport exit
pootis{"Done!"}
note End of the loop!
Using imports
You can define, say a doctor.txt file:
erectin a medigun
pootis { "Healed ", 1' }
built medigun
erectin an ubercharge
pootis { "Charging the ", 1' }
use medigun { 1' }
built ubercharge
Then you can use it with the medic import, which is dynamic (Therefore the call site might affect).
medic "doctor.txt"
use doctor/ubercharge { demoman }
Abort the program early
This instruction terminates the program, if needed.
the briefcase is safe
note This will abort the program
spy is dead, not big surprise.
pootis { "This won't be shown!" }
Note: The directive the briefcase is safe just toggles off the printing of the comments.