Dango

From Esolang
Jump to navigation Jump to search
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.

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