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

From Esolang
Jump to navigation Jump to search

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

See also