Selter
- This is still a work in progress. It may be changed in the future.
Selter is an esoteric programming language created by User:TheSpiderNinjas in 2025. It is a minimalist, symbolic language built around cycling through values in labeled lines and executing basic commands (in, out, jmp, jiz). It is designed with a custom iteration-based control structure and supports all data types.
Overview
Each line in a Selter program is labeled using a custom alphabetic scheme: a, b, ..., z, A, ..., Z, aa, ba, ..., and so on. A line label can hold any data type (such as a string, list, or tuple), and each time the label is accessed, the next command. The primary commands are:
- in: Accepts input and stores it in a line.
- out: Outputs the value specified.
- jmp: Jumps to the line specified.
- jiz: Jumps to the line specified if the value specified is 0.
Selter omits explicit numeric indices and instead uses line visits to iterate through data. It supports basic operations like concatenation and can work with strings, lists, tuples, numbers, etc.
Syntax
Each line starts with command and any required data:
in "Placeholder text" out a jmp a
Commands
- in <prompt>: Takes user input and stores it as the current value of the line.
- out <value>: Outputs the value specified(if line is specified outputs the value at that line).
- jmp <line>: Jumps to the line specified, works like GOTO commands in other languages.
- jiz <value> <line>: Works like jmp but only if the value specified is equal to 0 otherwise it does nothing.
- end: Stops the program.
- <value>: Sets value of line to value specified, by default values are 0.
Line Labels
Labels follow a non-standard alphabetical iteration:
- First: a–z
- Then: A–Z
- Then: aa, ba, ..., ZZ
- Then: aaa, aab, etc.
Each label acts like a queue of values. Every time a label is used, it "cycles" to the next item in its list. This makes iteration implicit and stateful.
Cycling
After each command in a line a ; or : can be put in use for cycling:
- ; are used to add an item to the cycle
- : are used to add an item to the cycle and serve as a loop point, if the line is currently at it's last item the next time it's accessed it will loop to the item right of the loop pointer by default the loop pointer is set at the start and you can only use one : per line.
Execution
The program starts at the label a. Each command may alter the flow (e.g., jmp) or operate based on the values of labels. The execution continues until the program ends.
Examples
1. Truth Machine
in "Enter 0 or 1: " jiz a out a jmp c out a end
2. For Loop
5: a - 1 jiz a e out a jmp a end
Computational Class
Selter is not yet proven Turing-complete, but its line-cycling memory model and conditional jumps suggest that it can emulate finite state machines and potentially more, especially when combined with iterable manipulation.