1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
--------------------------------------------------------------------------------
-- map
--------------------------------------------------------------------------------
fun = function(...) return 'map', ... end
dump(map(fun, range(0)))
--[[test
--test]]
dump(map(fun, range(4)))
--[[test
map 1
map 2
map 3
map 4
--test]]
dump(map(fun, enumerate({"a", "b", "c", "d", "e"})))
--[[test
map 1 a
map 2 b
map 3 c
map 4 d
map 5 e
--test]]
dump(map(function(x) return 2 * x end, range(4)))
--[[test
2
4
6
8
--test]]
fun = nil
--[[test
--test]]
--------------------------------------------------------------------------------
-- enumerate
--------------------------------------------------------------------------------
dump(enumerate({"a", "b", "c", "d", "e"}))
--[[test
1 a
2 b
3 c
4 d
5 e
--test]]
dump(enumerate(enumerate(enumerate({"a", "b", "c", "d", "e"}))))
--[[test
1 1 1 a
2 2 2 b
3 3 3 c
4 4 4 d
5 5 5 e
--test]]
dump(enumerate(zip({"one", "two", "three", "four", "five"},
{"a", "b", "c", "d", "e"})))
--[[test
1 one a
2 two b
3 three c
4 four d
5 five e
--test]]
--------------------------------------------------------------------------------
-- intersperse
--------------------------------------------------------------------------------
dump(intersperse("x", {}))
dump(intersperse("x", {"a", "b", "c", "d", "e"}))
--[[test
a
x
b
x
c
x
d
x
e
x
--test]]
dump(intersperse("x", {"a", "b", "c", "d", "e", "f"}))
--[[test
a
x
b
x
c
x
d
x
e
x
f
x
--test]]
|