Abuse filter log

Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)
Jump to navigation Jump to search
Details for log entry 9,615

18:42, 12 January 2026: RaiseAfloppaFan3925 (talk | contribs) triggered filter 16, performing the action "edit" on Dango. Actions taken: Disallow; Filter description: the "User:" must not be hidden on links to userspace (examine)

Changes made in edit

{{ infobox proglang
{{ infobox proglang
| name = Dango
| name = Dango
| paradigms = imperative
| author = [[User:RaiseAfloppaFan3925]]
| author = [[User:RaiseAfloppaFan3925]]
| year = [[:Category:2025|2025]]
| year = [[:Category:2025|2025]]
| memsys = [[:Category:Stack-based|Stack-based]]
| memsys = [[:Category:Stack-based|Stack-based]]
| class = [[Linear bounded automaton|likely Linear-bounded automaton]]
| refimpl = [https://github.com/raiseAfloppaFan3925/dango-esolang <code>dango-esolang</code>]
| refimpl = [https://github.com/raiseAfloppaFan3925/dango <code>dango</code>]
| files = <code>.dango</code>, <code>.🍡</code>
| files = <code>.dango</code>, <code>.🍡</code>
}}
}}
| <code>(j)(4)----</code>
| <code>(j)(4)----</code>
| Jumps to the line number of the stack top.
| Jumps to the line number of the stack top.
|-
| <code>(`)</code>
| <code>(`)(')(1234)----</code>
| Converts a value to an integer, returns <code>()</code> if the conversion failed.
|-
| <code>(;)</code>
| <code>(;)(')(0.401)----</code>
| Converts a value to a float, returns <code>()</code> if the conversion failed.
|-
|-
| <code>(len)</code>
| <code>(len)</code>
Error: skewer is too short for 6 dumplings
Error: skewer is too short for 6 dumplings
--(O)(O)(O) >
--(O)(O)(O) >
</pre>

== Standard Library ==

For some reason, Dango has a standard library.

=== I/O ===

* <code>:io-input</code> - can do either <code>(:io-input)(0)</code> which just takes in input, or <code>(:io-input)(1)----</code> where an extra prompt argument is needed
* <code>:env-args</code> - returns the argument vector passed to Dango

=== Time ===

* <code>:chrono-now</code> - returns the number of seconds (with milliseconds) since the Unix epoch
* <code>:chrono-sleep</code> - sleeps for the given amount of seconds (int and float supported)

=== Math ===

* <code>:math-cos</code> - returns the cosine of a number
* <code>:math-e</code> - returns the value of Euler's number <math>e</math> (approx. 2.71828...)
* <code>:math-pi</code> - returns the value of <math>\pi</math> (approx. 3.14159265358979...)
* <code>:math-sin</code> - returns the sine of a number
* <code>:math-sqrt</code> - returns the square root of a number
* <code>:math-sqrt2</code> - returns the value of <math>\sqrt{2}</math> (approx. 1.41421...)
* <code>:math-tan</code> - returns the tangent of a number

== Embedding ==

Dango can be embedded by adding it as a dependency after downloading from source.

<pre>
use dango::dango_utils::{
self,
dango_errors,
dango::runtime::{
self,
Value,
Program
}
};

unsafe fn exec_code(&mut self) {
do_stuff();
let mut program = dango_utils::compile_str(&amp;user_input_idk);
match program {
Ok(program) => {
self.spawn_dango_thread(program);
println!("{}", "what do I do");
}
Err(errors) => unsafe { self.handle_err(errors) },
}
do_more_stuff();
}
</pre>
</pre>




<pre>
<pre>
(j)(4)(while)(!=)(1)(:io-input)----
(j)(3)---- eat (0)(while)(=)(0)(:io-input)(0)----
(j)(2)---- eat (1)----
</pre>

=== Cat program ===

<pre>
eat (:io-input)(0)----
</pre>

=== Truth machine ===

<pre>
remove (I forgot to fix this program)----
(j)(5)(while)(=)(')(0)(:io-input)(0)----
eat (1)----
eat (1)----
(j)(2)----
(j)(3)----
eat (0)----
eat (0)----
</pre>
</pre>


=== Cat program ===
=== Fibonacci number (iterative) ===


<Pre>
<pre>
(`)(1)---- remove (Our fibonacci number)----
eat (:io-input)----
fetch 0 fetch 0
remove (Fib[n], iterative fibonacci by the way)----
(j)(9)(while)(!=)(0)---- fetch 0 remove (if n == 0 -> 0)----
(j)(46)(0)----
(j)(9)(while)(!=)(1)---- fetch 0 remove (if n == 1 -> 1)----
(j)(46)(1)----

fetch 0 remove (let n = n)----
(0)---- remove (let x = 0)----
(1)---- remove (let y = 1)----
(1)---- remove (let i = 0)----
remove (while i < y)----
remove (top i y x n bottom )----

fetch 2 remove (x)----
remove (top x i y x n bottom )----

fetch 2 remove (y)----
remove (top y x i y x n bottom )----

(+)---- remove (let z = x + y)----
remove (top z i y x n bottom )----

fetch 4 remove (n = n)----
remove (top n z i y x n bottom )----

fetch 3 remove (x = y)----
remove (top x n z i y x n bottom )----

fetch 2 remove (y = z)----
remove (top y x n z i y x n bottom )----

fetch 4
(+)(1)---- remove (i = i + 1)----
remove (top i y x n z i y x n bottom )----

fetch 0 remove (get i)----
remove (top i i y x n z i y x n bottom )----

fetch 4 remove (get n)----
remove (top n i i y x n z i y x n bottom )----

(j)(13)(while)(<)----
remove (end while)----
remove (end)----
eat (')(F()----
eat
eat ('c)(41)----
eat (')( = )----
eat
eat ('c)(10)----
</pre>

=== [[User:RaiseAfloppaFan3925/Program forms#User-friendly_iterative_Fibonacci_program|User-friendly iterative Fibonacci (golfed)]] ===

<pre>
(j)(11)(while)(=)(')(exit)---- fetch 0 fetch 0 (:io-input)(1)---- eat (')(Input a number: )----
(j)(1)---- eat eat eat eat (')('exit' to exit)('c)(10)(')('help' to see this)('c)(10)---- (while)(=)(')(help)----
(j)(1)---- eat eat (')(Invalid number. Try again.)('c)(10)---- (while)(=)()---- fetch 0 (`)
(j)(1)---- eat eat (')(Cannot get a negative Fibonacci number. Try again.)('c)(10)(while)(<)(0)---- fetch 0
(j)(1)---- eat eat (')(Resulting value would be too large. Try again.)('c)(10)(while)(>)(92)---- fetch 0
(j)(10)(0)(while)(=)(0)---- fetch 0
(j)(10)(1)(while)(=)(1)---- fetch 0
(1)(1)(0)---- fetch 0
(j)(9)(while)(<)---- fetch 4 fetch 0 (+)(1)---- fetch 4 fetch 2 fetch 3 fetch 4 (+)---- fetch 2 fetch 2
(j)(1)---- eat ('c)(10)---- eat eat eat ('c)(41)(')( = )---- eat eat (')(F()----
</pre>

=== User-friendly sleep program ===

<pre>
fetch 0 fetch 0 (:io-input)(1)(+)(')( )(+)('c)(58)(+)('c)(41)(')(Sleep for (seconds)----
(j)(12)(while)(=)(')(exit)----
(j)(1)---- eat eat eat eat eat eat (')('exit' to exit)('c)(10)(')('help' to show this)('c)(10)(')(this program takes in a number as input and sleeps for that amount of time)('c)(10)---- (while)(=)(')(help)----
(j)(1)---- remove remove eat eat (')(Invalid duration. Try again.)('c)(10)---- (while)(+)(<)(0)---- fetch 1 (=)()---- fetch 0 fetch 0 (;)----
(-)(:chrono-now)---- remove (:chrono-sleep)---- fetch 1 (:chrono-now)----
(-)---- fetch 1 (0)----
fetch 0
(-)---- fetch 3 eat (')( seconds (error of )---- eat fetch 0 eat (')(Slept for )----
eat eat ('c)(41)('c)(10)---- eat
remove remove remove remove
(j)(1)----
</pre>
</pre>


Action parameters

VariableValue
Edit count of the user (user_editcount)
325
Name of the user account (user_name)
'RaiseAfloppaFan3925'
Age of the user account (user_age)
39773773
Page ID (page_id)
23829
Page namespace (page_namespace)
0
Page title (without namespace) (page_title)
'Dango'
Full page title (page_prefixedtitle)
'Dango'
Action (action)
'edit'
Edit summary/reason (summary)
'add standard library and big examples'
Old content model (old_content_model)
'wikitext'
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
'<!---- I think I should give up --> {{WIP}} <b><i>please take any inconsistencies with an ocean's worth of salt.</i></b> {{ infobox proglang | name = Dango | paradigms = imperative | author = [[User:RaiseAfloppaFan3925]] | year = [[:Category:2025|2025]] | memsys = [[:Category:Stack-based|Stack-based]] | refimpl = [https://github.com/raiseAfloppaFan3925/dango-esolang <code>dango-esolang</code>] | files = <code>.dango</code>, <code>.🍡</code> }} Dango is an esolang by [[User:RaiseAfloppaFan3925]] that revolves around [https://en.wikipedia.org/wiki/Dango 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 <code>()</code> (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 <code>----</code>. == Operations == === "Dumpling" operations === <!-- lack of a better word --> {| class = "wikitable plainpres" width = "80%" ! Operation ! Example ! Action |- | <code>()</code> | <code>()----</code> | Null value. |- | <code>(')</code> | <code>(')(Hello, world!)----</code> | Stringify the last pushed value. |- | <code>('c)</code> | <code>('c)(10)----</code> | Create a Unicode character from the stack top as a code point. |- | <code>(j)</code> | <code>(j)(4)----</code> | Jumps to the line number of the stack top. |- | <code>(len)</code> | <code>(...)(while)(>)(2)(len)----</code> | If the stack top is a dango (the data structure), then the amount of dumplings on it is pushed to the stack. Otherwise, <code>0</code> is pushed. The value at the top is preserved, unlike with other instructions. |} === Function calls === In Dango, a function call is just the function name preceded by a colon (<code>:</code>) inside a dumpling, with the arguments being stored on the stack. Example: <pre> (:io-write)(')(stdout)(')(Hello, world!)---- </pre> Stack (before function call): <pre> top "stdout" "Hello, world!" bottom </pre> 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. {| class = "wikitable plainpres" width = "80%" ! Operation ! Example ! Action |- | <code>eat</code> | <code>eat (')(Hello, world!)----</code>, <code>eat</code> | Pops the top of the stack and prints it. |- | <code>fetch</code> | <code>fetch 2</code> | Copies the value <code>N</code> slots down from the top of the stack and moves the copy to the top. |- | <code>remove</code> | <code>remove</code> | If the top of the stack is a dango, then it removes the value at the end and pushes it to the stack. Example: <pre> skewer 2 (1)(2)---- eat remove eat remove </pre> Stack (line 1): <pre> top (1)(2)---- (Dango) bottom </pre> Stack (line 2, before <code>eat</code>): <pre> top 1 (Int) (2)---- (Dango) bottom </pre> Stack (line 3, before <code>eat</code>): <pre> top 2 (Int) bottom </pre> |- | <code>skewer &lt;N&gt;</code> | <code>skewer 2 (1)(2)----</code> | Pops the top <code>N</code> values off of the stack and stores them in a dango that is pushed onto the stack, with the stack top being stored to the left and the value at <code>top_pos - N</code> being stored to the right. Example: <pre> eat skewer 3 (1)(2)(3)---- </pre> Output: <pre> (1)(2)(3)---- </pre> If the amount of values requested to be skewered is greater than 5, then an error occurs. Example: <pre> eat skewer 6 (1)(2)(3)---- skewer 2 (4)(4)---- (5)(6)---- </pre> Output: <pre> error: skewer is too short for 6 dumplings </pre> If the amount of values requested to be skewered is zero, then an error occurs. Example: <pre> skewer 0 </pre> Output: <pre> error: cannot have dango with zero dumplings, that's just a stick </pre> |} == Values == * Null/Nil - <code>()</code> * Integers - signed 64-bit integers with overflow and underflow * Floats - 64-bit (double-precision) IEEE floats * Strings - strings (created by the <code>(')</code> 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 <code>skewer</code> keyword which constructs a dango out of the top N values. REPL Example: <pre> --(O)(O)(O) > eat skewer 3 (1)(2)(3)---- (1)(2)(3)---- () </pre> Here is what happens if a dango contains a dango. <pre> skewer 2 (4)(5)---- (1)(2)(3)---- skewer 4 eat </pre> Output: <pre> (1)(2)(3)[(4)(5)]---- </pre> Here is what happens if a dango is constructed with a length greater than 5. <pre> --(O)(O)(O) > eat skewer 6 (1)(2)(3)(4)(5)(6)---- Error: skewer is too short for 6 dumplings --(O)(O)(O) > </pre> == Example Programs == === Hello world === <pre> eat (')(Hello, world!)---- </pre> === Truth Machine === <pre> (j)(4)(while)(!=)(1)(:io-input)---- eat (1)---- (j)(2)---- eat (0)---- </pre> === Cat program === <Pre> eat (:io-input)---- </pre> [[Category:2025]] [[Category:Implemented]] [[Category:Thematic]] <!-- I guess... -->'
New page wikitext, after the edit (new_wikitext)
'<!---- I think I should give up --> {{WIP}} <b><i>please take any inconsistencies with an ocean's worth of salt.</i></b> {{ infobox proglang | name = Dango | author = [[User:RaiseAfloppaFan3925]] | year = [[:Category:2025|2025]] | memsys = [[:Category:Stack-based|Stack-based]] | class = [[Linear bounded automaton|likely Linear-bounded automaton]] | refimpl = [https://github.com/raiseAfloppaFan3925/dango <code>dango</code>] | files = <code>.dango</code>, <code>.🍡</code> }} Dango is an esolang by [[User:RaiseAfloppaFan3925]] that revolves around [https://en.wikipedia.org/wiki/Dango 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 <code>()</code> (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 <code>----</code>. == Operations == === "Dumpling" operations === <!-- lack of a better word --> {| class = "wikitable plainpres" width = "80%" ! Operation ! Example ! Action |- | <code>()</code> | <code>()----</code> | Null value. |- | <code>(')</code> | <code>(')(Hello, world!)----</code> | Stringify the last pushed value. |- | <code>('c)</code> | <code>('c)(10)----</code> | Create a Unicode character from the stack top as a code point. |- | <code>(j)</code> | <code>(j)(4)----</code> | Jumps to the line number of the stack top. |- | <code>(`)</code> | <code>(`)(')(1234)----</code> | Converts a value to an integer, returns <code>()</code> if the conversion failed. |- | <code>(;)</code> | <code>(;)(')(0.401)----</code> | Converts a value to a float, returns <code>()</code> if the conversion failed. |- | <code>(len)</code> | <code>(...)(while)(>)(2)(len)----</code> | If the stack top is a dango (the data structure), then the amount of dumplings on it is pushed to the stack. Otherwise, <code>0</code> is pushed. The value at the top is preserved, unlike with other instructions. |} === Function calls === In Dango, a function call is just the function name preceded by a colon (<code>:</code>) inside a dumpling, with the arguments being stored on the stack. Example: <pre> (:io-write)(')(stdout)(')(Hello, world!)---- </pre> Stack (before function call): <pre> top "stdout" "Hello, world!" bottom </pre> 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. {| class = "wikitable plainpres" width = "80%" ! Operation ! Example ! Action |- | <code>eat</code> | <code>eat (')(Hello, world!)----</code>, <code>eat</code> | Pops the top of the stack and prints it. |- | <code>fetch</code> | <code>fetch 2</code> | Copies the value <code>N</code> slots down from the top of the stack and moves the copy to the top. |- | <code>remove</code> | <code>remove</code> | If the top of the stack is a dango, then it removes the value at the end and pushes it to the stack. Example: <pre> skewer 2 (1)(2)---- eat remove eat remove </pre> Stack (line 1): <pre> top (1)(2)---- (Dango) bottom </pre> Stack (line 2, before <code>eat</code>): <pre> top 1 (Int) (2)---- (Dango) bottom </pre> Stack (line 3, before <code>eat</code>): <pre> top 2 (Int) bottom </pre> |- | <code>skewer &lt;N&gt;</code> | <code>skewer 2 (1)(2)----</code> | Pops the top <code>N</code> values off of the stack and stores them in a dango that is pushed onto the stack, with the stack top being stored to the left and the value at <code>top_pos - N</code> being stored to the right. Example: <pre> eat skewer 3 (1)(2)(3)---- </pre> Output: <pre> (1)(2)(3)---- </pre> If the amount of values requested to be skewered is greater than 5, then an error occurs. Example: <pre> eat skewer 6 (1)(2)(3)---- skewer 2 (4)(4)---- (5)(6)---- </pre> Output: <pre> error: skewer is too short for 6 dumplings </pre> If the amount of values requested to be skewered is zero, then an error occurs. Example: <pre> skewer 0 </pre> Output: <pre> error: cannot have dango with zero dumplings, that's just a stick </pre> |} == Values == * Null/Nil - <code>()</code> * Integers - signed 64-bit integers with overflow and underflow * Floats - 64-bit (double-precision) IEEE floats * Strings - strings (created by the <code>(')</code> 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 <code>skewer</code> keyword which constructs a dango out of the top N values. REPL Example: <pre> --(O)(O)(O) > eat skewer 3 (1)(2)(3)---- (1)(2)(3)---- () </pre> Here is what happens if a dango contains a dango. <pre> skewer 2 (4)(5)---- (1)(2)(3)---- skewer 4 eat </pre> Output: <pre> (1)(2)(3)[(4)(5)]---- </pre> Here is what happens if a dango is constructed with a length greater than 5. <pre> --(O)(O)(O) > eat skewer 6 (1)(2)(3)(4)(5)(6)---- Error: skewer is too short for 6 dumplings --(O)(O)(O) > </pre> == Standard Library == For some reason, Dango has a standard library. === I/O === * <code>:io-input</code> - can do either <code>(:io-input)(0)</code> which just takes in input, or <code>(:io-input)(1)----</code> where an extra prompt argument is needed * <code>:env-args</code> - returns the argument vector passed to Dango === Time === * <code>:chrono-now</code> - returns the number of seconds (with milliseconds) since the Unix epoch * <code>:chrono-sleep</code> - sleeps for the given amount of seconds (int and float supported) === Math === * <code>:math-cos</code> - returns the cosine of a number * <code>:math-e</code> - returns the value of Euler's number <math>e</math> (approx. 2.71828...) * <code>:math-pi</code> - returns the value of <math>\pi</math> (approx. 3.14159265358979...) * <code>:math-sin</code> - returns the sine of a number * <code>:math-sqrt</code> - returns the square root of a number * <code>:math-sqrt2</code> - returns the value of <math>\sqrt{2}</math> (approx. 1.41421...) * <code>:math-tan</code> - returns the tangent of a number == Embedding == Dango can be embedded by adding it as a dependency after downloading from source. <pre> use dango::dango_utils::{ self, dango_errors, dango::runtime::{ self, Value, Program } }; unsafe fn exec_code(&mut self) { do_stuff(); let mut program = dango_utils::compile_str(&amp;user_input_idk); match program { Ok(program) => { self.spawn_dango_thread(program); println!("{}", "what do I do"); } Err(errors) => unsafe { self.handle_err(errors) }, } do_more_stuff(); } </pre> == Example Programs == === Hello world === <pre> eat (')(Hello, world!)---- </pre> === Truth Machine === <pre> (j)(3)---- eat (0)(while)(=)(0)(:io-input)(0)---- (j)(2)---- eat (1)---- </pre> === Cat program === <pre> eat (:io-input)(0)---- </pre> === Truth machine === <pre> remove (I forgot to fix this program)---- (j)(5)(while)(=)(')(0)(:io-input)(0)---- eat (1)---- (j)(3)---- eat (0)---- </pre> === Fibonacci number (iterative) === <pre> (`)(1)---- remove (Our fibonacci number)---- fetch 0 fetch 0 remove (Fib[n], iterative fibonacci by the way)---- (j)(9)(while)(!=)(0)---- fetch 0 remove (if n == 0 -> 0)---- (j)(46)(0)---- (j)(9)(while)(!=)(1)---- fetch 0 remove (if n == 1 -> 1)---- (j)(46)(1)---- fetch 0 remove (let n = n)---- (0)---- remove (let x = 0)---- (1)---- remove (let y = 1)---- (1)---- remove (let i = 0)---- remove (while i < y)---- remove (top i y x n bottom )---- fetch 2 remove (x)---- remove (top x i y x n bottom )---- fetch 2 remove (y)---- remove (top y x i y x n bottom )---- (+)---- remove (let z = x + y)---- remove (top z i y x n bottom )---- fetch 4 remove (n = n)---- remove (top n z i y x n bottom )---- fetch 3 remove (x = y)---- remove (top x n z i y x n bottom )---- fetch 2 remove (y = z)---- remove (top y x n z i y x n bottom )---- fetch 4 (+)(1)---- remove (i = i + 1)---- remove (top i y x n z i y x n bottom )---- fetch 0 remove (get i)---- remove (top i i y x n z i y x n bottom )---- fetch 4 remove (get n)---- remove (top n i i y x n z i y x n bottom )---- (j)(13)(while)(<)---- remove (end while)---- remove (end)---- eat (')(F()---- eat eat ('c)(41)---- eat (')( = )---- eat eat ('c)(10)---- </pre> === [[User:RaiseAfloppaFan3925/Program forms#User-friendly_iterative_Fibonacci_program|User-friendly iterative Fibonacci (golfed)]] === <pre> (j)(11)(while)(=)(')(exit)---- fetch 0 fetch 0 (:io-input)(1)---- eat (')(Input a number: )---- (j)(1)---- eat eat eat eat (')('exit' to exit)('c)(10)(')('help' to see this)('c)(10)---- (while)(=)(')(help)---- (j)(1)---- eat eat (')(Invalid number. Try again.)('c)(10)---- (while)(=)()---- fetch 0 (`) (j)(1)---- eat eat (')(Cannot get a negative Fibonacci number. Try again.)('c)(10)(while)(<)(0)---- fetch 0 (j)(1)---- eat eat (')(Resulting value would be too large. Try again.)('c)(10)(while)(>)(92)---- fetch 0 (j)(10)(0)(while)(=)(0)---- fetch 0 (j)(10)(1)(while)(=)(1)---- fetch 0 (1)(1)(0)---- fetch 0 (j)(9)(while)(<)---- fetch 4 fetch 0 (+)(1)---- fetch 4 fetch 2 fetch 3 fetch 4 (+)---- fetch 2 fetch 2 (j)(1)---- eat ('c)(10)---- eat eat eat ('c)(41)(')( = )---- eat eat (')(F()---- </pre> === User-friendly sleep program === <pre> fetch 0 fetch 0 (:io-input)(1)(+)(')( )(+)('c)(58)(+)('c)(41)(')(Sleep for (seconds)---- (j)(12)(while)(=)(')(exit)---- (j)(1)---- eat eat eat eat eat eat (')('exit' to exit)('c)(10)(')('help' to show this)('c)(10)(')(this program takes in a number as input and sleeps for that amount of time)('c)(10)---- (while)(=)(')(help)---- (j)(1)---- remove remove eat eat (')(Invalid duration. Try again.)('c)(10)---- (while)(+)(<)(0)---- fetch 1 (=)()---- fetch 0 fetch 0 (;)---- (-)(:chrono-now)---- remove (:chrono-sleep)---- fetch 1 (:chrono-now)---- (-)---- fetch 1 (0)---- fetch 0 (-)---- fetch 3 eat (')( seconds (error of )---- eat fetch 0 eat (')(Slept for )---- eat eat ('c)(41)('c)(10)---- eat remove remove remove remove (j)(1)---- </pre> [[Category:2025]] [[Category:Implemented]] [[Category:Thematic]] <!-- I guess... -->'
Unified diff of changes made by edit (edit_diff)
'@@ -6,9 +6,9 @@ {{ infobox proglang | name = Dango -| paradigms = imperative | author = [[User:RaiseAfloppaFan3925]] | year = [[:Category:2025|2025]] | memsys = [[:Category:Stack-based|Stack-based]] -| refimpl = [https://github.com/raiseAfloppaFan3925/dango-esolang <code>dango-esolang</code>] +| class = [[Linear bounded automaton|likely Linear-bounded automaton]] +| refimpl = [https://github.com/raiseAfloppaFan3925/dango <code>dango</code>] | files = <code>.dango</code>, <code>.🍡</code> }} @@ -44,4 +44,12 @@ | <code>(j)(4)----</code> | Jumps to the line number of the stack top. +|- +| <code>(`)</code> +| <code>(`)(')(1234)----</code> +| Converts a value to an integer, returns <code>()</code> if the conversion failed. +|- +| <code>(;)</code> +| <code>(;)(')(0.401)----</code> +| Converts a value to a float, returns <code>()</code> if the conversion failed. |- | <code>(len)</code> @@ -189,4 +197,57 @@ Error: skewer is too short for 6 dumplings --(O)(O)(O) > +</pre> + +== Standard Library == + +For some reason, Dango has a standard library. + +=== I/O === + +* <code>:io-input</code> - can do either <code>(:io-input)(0)</code> which just takes in input, or <code>(:io-input)(1)----</code> where an extra prompt argument is needed +* <code>:env-args</code> - returns the argument vector passed to Dango + +=== Time === + +* <code>:chrono-now</code> - returns the number of seconds (with milliseconds) since the Unix epoch +* <code>:chrono-sleep</code> - sleeps for the given amount of seconds (int and float supported) + +=== Math === + +* <code>:math-cos</code> - returns the cosine of a number +* <code>:math-e</code> - returns the value of Euler's number <math>e</math> (approx. 2.71828...) +* <code>:math-pi</code> - returns the value of <math>\pi</math> (approx. 3.14159265358979...) +* <code>:math-sin</code> - returns the sine of a number +* <code>:math-sqrt</code> - returns the square root of a number +* <code>:math-sqrt2</code> - returns the value of <math>\sqrt{2}</math> (approx. 1.41421...) +* <code>:math-tan</code> - returns the tangent of a number + +== Embedding == + +Dango can be embedded by adding it as a dependency after downloading from source. + +<pre> +use dango::dango_utils::{ + self, + dango_errors, + dango::runtime::{ + self, + Value, + Program + } +}; + +unsafe fn exec_code(&mut self) { + do_stuff(); + let mut program = dango_utils::compile_str(&amp;user_input_idk); + match program { + Ok(program) => { + self.spawn_dango_thread(program); + println!("{}", "what do I do"); + } + Err(errors) => unsafe { self.handle_err(errors) }, + } + do_more_stuff(); +} </pre> @@ -202,14 +263,110 @@ <pre> -(j)(4)(while)(!=)(1)(:io-input)---- +(j)(3)---- eat (0)(while)(=)(0)(:io-input)(0)---- +(j)(2)---- eat (1)---- +</pre> + +=== Cat program === + +<pre> +eat (:io-input)(0)---- +</pre> + +=== Truth machine === + +<pre> +remove (I forgot to fix this program)---- +(j)(5)(while)(=)(')(0)(:io-input)(0)---- eat (1)---- -(j)(2)---- +(j)(3)---- eat (0)---- </pre> -=== Cat program === +=== Fibonacci number (iterative) === + +<pre> +(`)(1)---- remove (Our fibonacci number)---- +fetch 0 fetch 0 +remove (Fib[n], iterative fibonacci by the way)---- + (j)(9)(while)(!=)(0)---- fetch 0 remove (if n == 0 -> 0)---- + (j)(46)(0)---- + (j)(9)(while)(!=)(1)---- fetch 0 remove (if n == 1 -> 1)---- + (j)(46)(1)---- + + fetch 0 remove (let n = n)---- + (0)---- remove (let x = 0)---- + (1)---- remove (let y = 1)---- + (1)---- remove (let i = 0)---- + remove (while i < y)---- + remove (top i y x n bottom )---- + + fetch 2 remove (x)---- + remove (top x i y x n bottom )---- + + fetch 2 remove (y)---- + remove (top y x i y x n bottom )---- + + (+)---- remove (let z = x + y)---- + remove (top z i y x n bottom )---- + + fetch 4 remove (n = n)---- + remove (top n z i y x n bottom )---- + + fetch 3 remove (x = y)---- + remove (top x n z i y x n bottom )---- + + fetch 2 remove (y = z)---- + remove (top y x n z i y x n bottom )---- + + fetch 4 + (+)(1)---- remove (i = i + 1)---- + remove (top i y x n z i y x n bottom )---- + + fetch 0 remove (get i)---- + remove (top i i y x n z i y x n bottom )---- + + fetch 4 remove (get n)---- + remove (top n i i y x n z i y x n bottom )---- + + (j)(13)(while)(<)---- + remove (end while)---- +remove (end)---- +eat (')(F()---- +eat +eat ('c)(41)---- +eat (')( = )---- +eat +eat ('c)(10)---- +</pre> + +=== [[User:RaiseAfloppaFan3925/Program forms#User-friendly_iterative_Fibonacci_program|User-friendly iterative Fibonacci (golfed)]] === + +<pre> +(j)(11)(while)(=)(')(exit)---- fetch 0 fetch 0 (:io-input)(1)---- eat (')(Input a number: )---- +(j)(1)---- eat eat eat eat (')('exit' to exit)('c)(10)(')('help' to see this)('c)(10)---- (while)(=)(')(help)---- +(j)(1)---- eat eat (')(Invalid number. Try again.)('c)(10)---- (while)(=)()---- fetch 0 (`) +(j)(1)---- eat eat (')(Cannot get a negative Fibonacci number. Try again.)('c)(10)(while)(<)(0)---- fetch 0 +(j)(1)---- eat eat (')(Resulting value would be too large. Try again.)('c)(10)(while)(>)(92)---- fetch 0 +(j)(10)(0)(while)(=)(0)---- fetch 0 +(j)(10)(1)(while)(=)(1)---- fetch 0 +(1)(1)(0)---- fetch 0 +(j)(9)(while)(<)---- fetch 4 fetch 0 (+)(1)---- fetch 4 fetch 2 fetch 3 fetch 4 (+)---- fetch 2 fetch 2 +(j)(1)---- eat ('c)(10)---- eat eat eat ('c)(41)(')( = )---- eat eat (')(F()---- +</pre> + +=== User-friendly sleep program === -<Pre> -eat (:io-input)---- +<pre> +fetch 0 fetch 0 (:io-input)(1)(+)(')( )(+)('c)(58)(+)('c)(41)(')(Sleep for (seconds)---- +(j)(12)(while)(=)(')(exit)---- +(j)(1)---- eat eat eat eat eat eat (')('exit' to exit)('c)(10)(')('help' to show this)('c)(10)(')(this program takes in a number as input and sleeps for that amount of time)('c)(10)---- (while)(=)(')(help)---- +(j)(1)---- remove remove eat eat (')(Invalid duration. Try again.)('c)(10)---- (while)(+)(<)(0)---- fetch 1 (=)()---- fetch 0 fetch 0 (;)---- +(-)(:chrono-now)---- remove (:chrono-sleep)---- fetch 1 (:chrono-now)---- +(-)---- fetch 1 (0)---- +fetch 0 +(-)---- fetch 3 eat (')( seconds (error of )---- eat fetch 0 eat (')(Slept for )---- +eat eat ('c)(41)('c)(10)---- eat +remove remove remove remove +(j)(1)---- </pre> '
New page size (new_size)
10595
Old page size (old_size)
5256
Lines added in edit (added_lines)
[ 0 => '| class = [[Linear bounded automaton|likely Linear-bounded automaton]]', 1 => '| refimpl = [https://github.com/raiseAfloppaFan3925/dango <code>dango</code>]', 2 => '|-', 3 => '| <code>(`)</code>', 4 => '| <code>(`)(')(1234)----</code>', 5 => '| Converts a value to an integer, returns <code>()</code> if the conversion failed.', 6 => '|-', 7 => '| <code>(;)</code>', 8 => '| <code>(;)(')(0.401)----</code>', 9 => '| Converts a value to a float, returns <code>()</code> if the conversion failed.', 10 => '</pre>', 11 => '', 12 => '== Standard Library ==', 13 => '', 14 => 'For some reason, Dango has a standard library.', 15 => '', 16 => '=== I/O ===', 17 => '', 18 => '* <code>:io-input</code> - can do either <code>(:io-input)(0)</code> which just takes in input, or <code>(:io-input)(1)----</code> where an extra prompt argument is needed', 19 => '* <code>:env-args</code> - returns the argument vector passed to Dango', 20 => '', 21 => '=== Time ===', 22 => '', 23 => '* <code>:chrono-now</code> - returns the number of seconds (with milliseconds) since the Unix epoch', 24 => '* <code>:chrono-sleep</code> - sleeps for the given amount of seconds (int and float supported)', 25 => '', 26 => '=== Math ===', 27 => '', 28 => '* <code>:math-cos</code> - returns the cosine of a number', 29 => '* <code>:math-e</code> - returns the value of Euler's number <math>e</math> (approx. 2.71828...)', 30 => '* <code>:math-pi</code> - returns the value of <math>\pi</math> (approx. 3.14159265358979...)', 31 => '* <code>:math-sin</code> - returns the sine of a number', 32 => '* <code>:math-sqrt</code> - returns the square root of a number', 33 => '* <code>:math-sqrt2</code> - returns the value of <math>\sqrt{2}</math> (approx. 1.41421...)', 34 => '* <code>:math-tan</code> - returns the tangent of a number', 35 => '', 36 => '== Embedding ==', 37 => '', 38 => 'Dango can be embedded by adding it as a dependency after downloading from source.', 39 => '', 40 => '<pre>', 41 => 'use dango::dango_utils::{', 42 => ' self,', 43 => ' dango_errors,', 44 => ' dango::runtime::{', 45 => ' self,', 46 => ' Value,', 47 => ' Program', 48 => ' }', 49 => '};', 50 => '', 51 => 'unsafe fn exec_code(&mut self) {', 52 => ' do_stuff();', 53 => ' let mut program = dango_utils::compile_str(&amp;user_input_idk);', 54 => ' match program {', 55 => ' Ok(program) => {', 56 => ' self.spawn_dango_thread(program);', 57 => ' println!("{}", "what do I do");', 58 => ' }', 59 => ' Err(errors) => unsafe { self.handle_err(errors) },', 60 => ' }', 61 => ' do_more_stuff();', 62 => '}', 63 => '(j)(3)---- eat (0)(while)(=)(0)(:io-input)(0)----', 64 => '(j)(2)---- eat (1)----', 65 => '</pre>', 66 => '', 67 => '=== Cat program ===', 68 => '', 69 => '<pre>', 70 => 'eat (:io-input)(0)----', 71 => '</pre>', 72 => '', 73 => '=== Truth machine ===', 74 => '', 75 => '<pre>', 76 => 'remove (I forgot to fix this program)----', 77 => '(j)(5)(while)(=)(')(0)(:io-input)(0)----', 78 => '(j)(3)----', 79 => '=== Fibonacci number (iterative) ===', 80 => '', 81 => '<pre>', 82 => '(`)(1)---- remove (Our fibonacci number)----', 83 => 'fetch 0 fetch 0', 84 => 'remove (Fib[n], iterative fibonacci by the way)----', 85 => ' (j)(9)(while)(!=)(0)---- fetch 0 remove (if n == 0 -> 0)----', 86 => ' (j)(46)(0)----', 87 => ' (j)(9)(while)(!=)(1)---- fetch 0 remove (if n == 1 -> 1)----', 88 => ' (j)(46)(1)----', 89 => '', 90 => ' fetch 0 remove (let n = n)----', 91 => ' (0)---- remove (let x = 0)----', 92 => ' (1)---- remove (let y = 1)----', 93 => ' (1)---- remove (let i = 0)----', 94 => ' remove (while i < y)----', 95 => ' remove (top i y x n bottom )----', 96 => '', 97 => ' fetch 2 remove (x)----', 98 => ' remove (top x i y x n bottom )----', 99 => '', 100 => ' fetch 2 remove (y)----', 101 => ' remove (top y x i y x n bottom )----', 102 => '', 103 => ' (+)---- remove (let z = x + y)----', 104 => ' remove (top z i y x n bottom )----', 105 => '', 106 => ' fetch 4 remove (n = n)----', 107 => ' remove (top n z i y x n bottom )----', 108 => '', 109 => ' fetch 3 remove (x = y)----', 110 => ' remove (top x n z i y x n bottom )----', 111 => '', 112 => ' fetch 2 remove (y = z)----', 113 => ' remove (top y x n z i y x n bottom )----', 114 => '', 115 => ' fetch 4', 116 => ' (+)(1)---- remove (i = i + 1)----', 117 => ' remove (top i y x n z i y x n bottom )----', 118 => '', 119 => ' fetch 0 remove (get i)----', 120 => ' remove (top i i y x n z i y x n bottom )----', 121 => '', 122 => ' fetch 4 remove (get n)----', 123 => ' remove (top n i i y x n z i y x n bottom )----', 124 => '', 125 => ' (j)(13)(while)(<)----', 126 => ' remove (end while)----', 127 => 'remove (end)----', 128 => 'eat (')(F()----', 129 => 'eat', 130 => 'eat ('c)(41)----', 131 => 'eat (')( = )----', 132 => 'eat', 133 => 'eat ('c)(10)----', 134 => '</pre>', 135 => '', 136 => '=== [[User:RaiseAfloppaFan3925/Program forms#User-friendly_iterative_Fibonacci_program|User-friendly iterative Fibonacci (golfed)]] ===', 137 => '', 138 => '<pre>', 139 => '(j)(11)(while)(=)(')(exit)---- fetch 0 fetch 0 (:io-input)(1)---- eat (')(Input a number: )----', 140 => '(j)(1)---- eat eat eat eat (')('exit' to exit)('c)(10)(')('help' to see this)('c)(10)---- (while)(=)(')(help)----', 141 => '(j)(1)---- eat eat (')(Invalid number. Try again.)('c)(10)---- (while)(=)()---- fetch 0 (`)', 142 => '(j)(1)---- eat eat (')(Cannot get a negative Fibonacci number. Try again.)('c)(10)(while)(<)(0)---- fetch 0', 143 => '(j)(1)---- eat eat (')(Resulting value would be too large. Try again.)('c)(10)(while)(>)(92)---- fetch 0', 144 => '(j)(10)(0)(while)(=)(0)---- fetch 0', 145 => '(j)(10)(1)(while)(=)(1)---- fetch 0', 146 => '(1)(1)(0)---- fetch 0', 147 => '(j)(9)(while)(<)---- fetch 4 fetch 0 (+)(1)---- fetch 4 fetch 2 fetch 3 fetch 4 (+)---- fetch 2 fetch 2', 148 => '(j)(1)---- eat ('c)(10)---- eat eat eat ('c)(41)(')( = )---- eat eat (')(F()----', 149 => '</pre>', 150 => '', 151 => '=== User-friendly sleep program ===', 152 => '<pre>', 153 => 'fetch 0 fetch 0 (:io-input)(1)(+)(')( )(+)('c)(58)(+)('c)(41)(')(Sleep for (seconds)----', 154 => '(j)(12)(while)(=)(')(exit)----', 155 => '(j)(1)---- eat eat eat eat eat eat (')('exit' to exit)('c)(10)(')('help' to show this)('c)(10)(')(this program takes in a number as input and sleeps for that amount of time)('c)(10)---- (while)(=)(')(help)----', 156 => '(j)(1)---- remove remove eat eat (')(Invalid duration. Try again.)('c)(10)---- (while)(+)(<)(0)---- fetch 1 (=)()---- fetch 0 fetch 0 (;)----', 157 => '(-)(:chrono-now)---- remove (:chrono-sleep)---- fetch 1 (:chrono-now)----', 158 => '(-)---- fetch 1 (0)----', 159 => 'fetch 0', 160 => '(-)---- fetch 3 eat (')( seconds (error of )---- eat fetch 0 eat (')(Slept for )----', 161 => 'eat eat ('c)(41)('c)(10)---- eat', 162 => 'remove remove remove remove', 163 => '(j)(1)----' ]
Unix timestamp of change (timestamp)
'1768243322'