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
| 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)