Senn
| Paradigm(s) | Stack-based |
|---|---|
| Designed by | User:Las-r |
| Appeared in | 2026 |
| Computational class | Turing complete (Speculated) |
| Major implementations | GitHub |
| Influenced by | Enn |
| File extension(s) | .snn |
Senn (Stack-based Executable NAND Network) is a stack-based variant of the esolang Enn, created by Nayif Ehan in 2026.
Senn replaces named variables with a tape-based memory system controlled by three distinct pointers.
How Senn Works
Senn uses three primary pointers to interact with a tape of cells (bits):
,(Comma): The primary data pointer..(Dot): The secondary data pointer.?(Query): The tertiary data pointer.
Only NAND logic is able to be used on the data within the cell the pointers refer to.
IMPORTANT NOTE: Every program loops by default. To end a program, you must forcequit it, or use the --once argument.
Syntax
Basic Guidelines
- Line breaks, indentation, and trailing spaces do not matter.
- Every instruction should be ended with
;. - Comments are padded with
/.
Commands
Moving pointers
Pointers are moved using + and -.
,+++; / Moves `,` 3 cells forwards / .----; / Moves `.` 4 cells backwards / ?++----; / Moves `?` 2 cells backwards (2 - 4) /
NAND Operation
Senn performs NAND using a three-character instruction consisting of the pointers.
This sets the data at , to the data at . NAND ?.
,.?;
This sets the data at ? to, essentially, NOT ..
?..;
Toggle a cell
A single pointer symbol toggles the bit at that pointer's current location.
This toggles the bit at ,.
,;
Output a cell
- Bit Output:
>p;(wherepis a pointer symbol) prints the bit at that pointer. - Newline:
>;prints a newline. - ASCII Output:
>>p;prints the character represented by the 8 bits starting at pointerp.
The following outputs the data at ? and the following 7 bits in ASCII.
>>?;
Input a value
The `<` command checks if the spacebar is pressed. If true, it sets the bit at the , pointer to 1, otherwise 0.
<;
Computational Class
The true computation class of Senn is unproven, but it is speculated to be Turing-complete.
This is because the only thing limiting its predecessor, Enn, was it's bounded memory. Enn was incapable of creating or removing variables during runtime, only at initialization. Senn circumvents this by using an infinite stack tape, allowing it as much memory as it requires.
However, as said previously, there remains no formal proof of Senn's Turing-completeness.