Dango
- This is still a work in progress. It may be changed in the future.
Note: Dango is still very early in development and the creator is stupid, so take any inconsistencies or complexities with an ocean's worth of salt.
| Paradigm(s) | imperative |
|---|---|
| Designed by | User:RaiseAfloppaFan3925 |
| Appeared in | 2025 |
| Memory system | Stack-based |
| Computational class | Unknown |
| Reference implementation | dango-esolang |
| File extension(s) | .dango, .🍡 |
Dango is an esolang by User:RaiseAfloppaFan3925 that revolves around dango, a Japanese rice-based dumpling.
Code
Code in Dango are stored in dango (who could have guessed), where each instruction is wrapped in parentheses () (which will be referred to as "dumplings" for the rest of this article, for a lack of a better word) with the line ending with a stick ----.
Operations
"Dumpling" operations
| Operation | Example | Action |
|---|---|---|
()
|
()----
|
Null value |
(')
|
(')(Hello, world!)----
|
Stringify the last pushed value |
(j)
|
(j)(4)----
|
Jumps to the line number of the operand to the right. If there is no operand (example: ()(j)----), then the top of the stack is used.
|
(%left)
|
(...)(while)(>)(2)(%left)----
|
The amount of dumplings left on the topmost dango. (the data structure, not the code unit) |
Function calls
In Dango, a function call is just the function name preceded by a colon (:) inside a dumpling, with the arguments being stored on the stack.
Example:
(:io-write)(')(stdout)(')(Hello, world!)----
Stack (before function call):
top "stdout" "Hello, world!" bottom
Since the dumplings are pushed to the stack and functions take off of the stack, the arguments to the function can be in separate dango as seen above.
Dango operations
These operations operate on the dango memory in the program.
| Operation | Example | Action |
|---|---|---|
eat
|
eat (')(Hello, world!)----, eat
|
If given no parameters, then it will pop the dango at the top of the stack from memory. |
Values
- Null/Nil -
() - Integers - signed 64-bit integers with overflow and underflow
- Floats - 64-bit (double-precision) IEEE floats
- Strings - strings (created by the
(')dumpling) - Raw text - strings, but with parentheses
Dango
The dango (not to be confused with the language and the code unit in the language) is a stack-like data structure. It is limited to a maximum of 5 values, but it can contain more dango. Dangos are constructed with the skewer keyword which constructs a dango out of the top N values.
REPL Example:
--(O)(O)(O) > eat skewer 3 (1)(2)(3)---- (1)(2)(3)---- ()
Here is what happens if a dango contains a dango.
skewer 2 (4)(5)---- (1)(2)(3)---- skewer 4 eat
Output:
(1)(2)(3)[(4)(5)]----
Here is what happens if a dango is constructed with a length greater than 5.
--(O)(O)(O) > eat skewer 6 (1)(2)(3)(4)(5)(6)---- Error: skewer is too small for 6 dumplings --(O)(O)(O) >
Example Programs
Hello world
eat (')(Hello, world!)----
Truth Machine
(j)(3)(while)(=)(1)(:io-input)---- (j)(5)---- eat (1)---- (j)(3)---- eat (0)----
Cat program
eat (:io-input)----
