2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 04:57:32 +01:00
|
|
|
func main { int | with args ;
|
|
|
|
def thing
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 04:57:32 +01:00
|
|
|
1 anew =thing
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 04:57:32 +01:00
|
|
|
"hi" 0 thing:unwrap:set;
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 19:34:25 +01:00
|
|
|
def thing2 thing:unwrap List:new =thing2
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 04:57:32 +01:00
|
|
|
"world" thing2:unwrap:push
|
2023-02-19 19:34:25 +01:00
|
|
|
"hello" 0 thing2:unwrap:insert
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 19:34:25 +01:00
|
|
|
"printing first two words of 'hello hi world' (should be 'hello hi')" println
|
|
|
|
" " print
|
|
|
|
0 thing2:unwrap:get print " " print
|
|
|
|
1 thing2:unwrap:get println
|
|
|
|
"removing hello" println
|
|
|
|
thing2:pop-front;
|
|
|
|
"printing first two words again" println
|
|
|
|
" " print
|
|
|
|
0 thing2:unwrap:get print " " print
|
|
|
|
1 thing2:unwrap:get println
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 19:34:25 +01:00
|
|
|
"" println
|
|
|
|
"testing closures and func-ptrs" println
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 04:57:32 +01:00
|
|
|
def thingy
|
|
|
|
"heya1" =thingy
|
|
|
|
"thingy println" dyn-read call
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 04:57:32 +01:00
|
|
|
"heya2" =thingy
|
|
|
|
{ |
|
|
|
|
thingy println
|
|
|
|
} call
|
2023-02-18 18:43:05 +01:00
|
|
|
|
2023-02-19 19:34:25 +01:00
|
|
|
def ptr
|
|
|
|
&println =ptr
|
|
|
|
"ptr works" ptr call
|
|
|
|
&&println =ptr
|
|
|
|
"ptr-ptr works" ptr call call
|
|
|
|
thingy:&unwrap =ptr
|
|
|
|
"unwrap-ptr works" ptr call println
|
|
|
|
thingy:&&unwrap =ptr
|
|
|
|
"unwrap-ptr-ptr works" ptr call call println
|
|
|
|
|
|
|
|
|
|
|
|
"" println
|
|
|
|
"testing if" println
|
|
|
|
|
|
|
|
def a "test" =a
|
|
|
|
def b "test" =b
|
|
|
|
a b eq dup if {
|
|
|
|
a " is equal to " b concat concat println
|
|
|
|
} not if {
|
|
|
|
a " is not equal to " b concat concat panic
|
|
|
|
}
|
|
|
|
|
|
|
|
a b assert-eq;
|
|
|
|
|
|
|
|
"" println
|
|
|
|
"testing ranges & iterators: (0..30@5) + 1" println
|
|
|
|
|
|
|
|
def range 5 (0 30 Range:new):set-step =range
|
|
|
|
|
|
|
|
range:iter
|
|
|
|
{ | 1 + } swap:map
|
|
|
|
{ | _str println } swap:foreach
|
|
|
|
|
|
|
|
"" println
|
|
|
|
"testing Iter:sum of 5 10s" println
|
|
|
|
|
|
|
|
0 5 Range:new:iter
|
|
|
|
{ | pop 10 } swap:map
|
|
|
|
_:sum
|
|
|
|
_str println
|
|
|
|
|
|
|
|
"" println
|
|
|
|
"testing MicroMap" println
|
|
|
|
|
|
|
|
def map null MicroMap:new =map
|
|
|
|
"hey" "hello" map:set;
|
|
|
|
"helloworld" "Hello, World" map:set;
|
|
|
|
"{ " print
|
|
|
|
map:iter
|
|
|
|
{ | with item ;
|
|
|
|
"'" print
|
|
|
|
0 item:get print
|
|
|
|
"': '" print
|
|
|
|
1 item:get print
|
|
|
|
"', " print
|
|
|
|
} swap:foreach
|
|
|
|
"}" println
|
|
|
|
|
|
|
|
"" println
|
|
|
|
|
2023-02-19 04:57:32 +01:00
|
|
|
100
|
2023-02-19 02:03:06 +01:00
|
|
|
}
|