We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Stable
Stable is an esoteric programming language that can push only zeroes. The only way to get nonzero number is to preserve the initial stack. This language is inspired by Volatile. This language can be interpreted as deterministic subset of Volatile with initial stack of [1], instead of empty stack.
Notation
We use {stack}{program} notation. We also use <variable> for denoting variable. (...) is a single token that can be deconstructed to get its contents. Additionally, we use word "error" if the program errors. Output is indicated with output: clause after the rule.
Original State
The original state of the program is:
{1}{<program>}
Instruction
The instructions are the same as Volatile, but without ~. Rule above is favored over the bottom ones.
{<stack> a b}{+ <program>} => {<stack> a+b} {<program>}
{<stack> a b}{- <program>} => {<stack> a-b} {<program>}
{<stack> a b}{* <program>} => {<stack> a*b} {<program>}
{<stack> a 0}{/ <program>} => error
{<stack> a b}{/ <program>} => {<stack> a/b} {<program>}
{<stack> a}{: <program>} => {<stack> a a} {<program>}
{<stack> a}{. <program>} => {<stack> a} {<program>} output: a
{<stack> 0}{(<loop>) <program>} => {<stack> 0} {<program>}
{<stack> a}{(<loop>) <program>} => {<stack> a} {<loop> (<loop>) <program>}
{<stack>}{<program>} => error