code / tomo

Lines41.3K C23.7K Markdown9.7K YAML5.0K Tomo2.3K
7 others 763
Python231 Shell230 make212 INI47 Text21 SVG16 Lua6
(33 lines)
2 struct Pair(x:Text, y:Text)
4 func pairwise(strs:[Text] -> func(->Pair?))
5 i := 1
6 return func(-> Pair?)
7 i += 1
8 return Pair(strs[i-1] or return none, strs[i] or return none)
10 func range(first:Int, last:Int -> func(->Int?))
11 i := first
12 return func(->Int?)
13 if i > last
14 return none
15 i += 1
16 return (i-1)
18 func main()
19 values := ["A", "B", "C", "D"]
21 assert (++: "($(foo.x)$(foo.y))" for foo in pairwise(values))! == "(AB)(BC)(CD)"
22 assert ["$(foo.x)$(foo.y)" for foo in pairwise(values)] == ["AB", "BC", "CD"]
24 do
25 result : @[Text]
26 for foo in pairwise(values)
27 result.insert("$(foo.x)$(foo.y)")
28 assert result[] == ["AB", "BC", "CD"]
30 assert [i for i in range(5, 10)] == [5, 6, 7, 8, 9, 10]
32 assert (+: range(5, 10))! == 45