diff options
Diffstat (limited to 'util.lua')
-rw-r--r-- | util.lua | 33 |
1 files changed, 1 insertions, 32 deletions
diff --git a/util.lua b/util.lua index 1059edf..938848c 100644 --- a/util.lua +++ b/util.lua | |||
@@ -1,42 +1,11 @@ | |||
1 | --- lam.util | 1 | --- lam.util |
2 | 2 | ||
3 | local util = {} | 3 | local util = {} |
4 | table.unpack = table.unpack or unpack | 4 | local unpack = table.unpack or unpack |
5 | |||
6 | function util.table (x) | ||
7 | if type(x) == "table" then | ||
8 | return x | ||
9 | else | ||
10 | return { x } | ||
11 | end | ||
12 | end | ||
13 | 5 | ||
14 | function util.pop (tbl) | 6 | function util.pop (tbl) |
15 | return table.remove(tbl, 1) | 7 | return table.remove(tbl, 1) |
16 | end | 8 | end |
17 | 9 | ||
18 | function util.car (tbl) | ||
19 | return tbl[1] | ||
20 | end | ||
21 | |||
22 | function util.cdr (tbl) | ||
23 | local t = {} | ||
24 | for i = 2, #tbl do t[i-1] = tbl[i] end | ||
25 | return t | ||
26 | end | ||
27 | |||
28 | function util.reduce (tbl, seed, fn) | ||
29 | if #tbl == 0 then return seed end | ||
30 | return util.reduce(tbl, fn(seed, util.pop(tbl)), fn) | ||
31 | end | ||
32 | |||
33 | function util.map (fn, tbl) | ||
34 | local out = {} | ||
35 | for k, v in pairs(tbl) do | ||
36 | out[k] = fn(v) | ||
37 | end | ||
38 | return out | ||
39 | end | ||
40 | |||
41 | --- | 10 | --- |
42 | return util | 11 | return util |