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 <N></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 <N></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(&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... -->' |
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(&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)----'
] |