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.

Recall

From Esolang
Jump to navigation Jump to search
Recall
Designed by User:I am islptng
Appeared in 2026
Computational class Unknown
Reference implementation Unimplemented

Recall is a stack-based language with recursion as its only control flow mechanism, designed by User:I am islptng.

Syntax and Semantics

Recall v0 operates on a stack of positive integers. Most commands are single-character operators that may be followed by an optional integer argument (defaults to 0 if omitted unless specified). Stack operations are 0-indexed. There is also an extra stack that is used for temporary storage.

Basic Stack Operations

Command Description
#x Push the integer x onto the stack
'x Increment the xth integer from the top
_x Drop the xth integer from the top
:x Push a duplicate of the xth integer from the top
<x Move the xth integer from the top to the top of the stack (x defaults to 1)
>x Move the top integer to the xth position from the top (x defaults to 2)
. Output the top integer and pop it from the stack
; Read one integer input and push it onto the stack
[x] Define a function. The function body is between the brackets. Functions are automatically called when defined
$ Recursion - call the current function again
,x Pop the xth integer from the top. If the value is 0, break out of the current function; otherwise decrement it.
+x Push the xth integer from the top onto the extra stack
=x Pop from the extra stack and insert it to the xth (defaults to 0) position from the top of the stack
| Reverses the extra stack
(text) Print text without affecting the stack. Can be nested, no escape sequences.
/ Print a newline
{ Print a left parenthesis ( (because you can't print unbalanced parentheses in (text))
} Print a right parenthesis )
- Cancel the previous instruction (to make comments)

Implementation

The reference implementation is in Python 3. Try it online!

Examples

Utils

[,'1$]_  -> adds top 2 integers
[,,1$]_ -> subtract top 2 integers, 0 if negative
#[,2:1>1[,1'$]_1$]_1_1 -> multiply top 2 integers
[#1,1'_ (True) #][,_ (False) #]_ -> If top is not 0, execute (True), otherwise execute (False)

Hello World

(Hello, world!)/

Pretty self-explanatory.

Factorial

[:,,'$_#[,2:1>1[,1'$]_1$]_1_1#]_

Replaces the top integer with its factorial. This demonstrates non-tail recursion.

99 Bottles of Beer

#99
[:.( bottles of beer on the wall, ):.( bottles of beer)/
(Take one down, pass it around, ),:.( bottle),,''(s)( of beer on the wall)//$]
( of beer on the wall)//
(1 bottle of beer on the wall, 1 bottle of beer
take one down, pass it around, 0 bottles of beer on the wall)//
(0 bottles of beer on the wall, 0 bottles of beer
Go to store, buy some more, 99 bottles of beer on the wall)