code / tomo

Lines41.3K C23.7K Markdown9.7K YAML5.0K Tomo2.3K
7 others 763
Python231 Shell230 make212 INI47 Text21 SVG16 Lua6
(79 lines)
1 func main()
2 x := 123
3 nums : @[Int]
4 do
5 defer
6 nums.insert(x)
7 x = 999
9 assert nums[] == [123]
10 assert x == 999
12 defer
13 say("All done!")
15 for word in ["first", "second", "third"]
16 defer
17 say("Got $word deferred")
19 if word == "second"
20 say("<skipped>")
21 skip
22 else if word == "third"
23 say("<stopped>")
24 stop
26 for i in 3
27 defer
28 say("Inner loop deferred $i")
30 if i == 2
31 say("<skipped inner>")
32 skip
33 else if i == 3
34 say("<stopped inner>")
35 stop
37 say("Made it through inner loop")
39 say("Made it through the loop")
41 >> thunk := func(return_early=no)
42 say("Entering thunk")
43 defer
44 say("Deferred thunk cleanup")
46 if return_early
47 say("Returning early...")
48 return
50 say("Finished thunk")
52 >> thunk(no)
53 >> thunk(yes)
55 >> defer_func(yes)
56 >> defer_func(no)
58 >> counter := make_counter()
59 assert counter() == 1
60 assert counter() == 2
61 assert counter() == 3
63 func defer_func(return_early=no)
64 say("Entering defer_func")
65 defer
66 say("Deferred defer_func cleanup")
68 if return_early
69 say("Returning early...")
70 return
72 say("Finished defer_func")
74 func make_counter(->func(->Int))
75 i := 1
76 return func()
77 defer i += 1
78 return i