--- lam.util local util = {} function util.table (x) if type(x) == "table" then return x else return { x } end end function util.pop (tbl) return table.remove(tbl, 1) end function util.car (tbl) return tbl[1] end function util.cdr (tbl) local t = {} for i = 2, #tbl do t[i-1] = tbl[i] end return t end function util.reduce (tbl, seed, fn) if #tbl == 0 then return seed end return util.reduce(tbl, fn(seed, util.pop(tbl)), fn) end function util.map (fn, tbl) local out = {} for k, v in pairs(tbl) do out[k] = fn(v) end return out end --- return util