diff options
Diffstat (limited to 'lib/array.fnl')
| -rw-r--r-- | lib/array.fnl | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/lib/array.fnl b/lib/array.fnl index 8af6244..eb4827a 100644 --- a/lib/array.fnl +++ b/lib/array.fnl @@ -4,15 +4,14 @@ (table.sort a less-fn) a) -(fn concat [a b] - (local copy - (fn [a b] - (reduce - (fn [_ v res] - (table.insert res v) - res) - b a))) - (copy a b)) +(fn concat [...] + (local res []) + (var cur 1) + (each [_ t (pairs [...])] + (each [_ v (pairs t)] + (tset res cur v) + (set cur (+ 1 cur)))) + res) (fn flip [a] (collect [k v (pairs a)] @@ -54,14 +53,14 @@ false) (fn list [obj] - (local result []) + (local res []) (var cursor 1) (each [_ v (pairs obj)] - (tset result cursor v) + (tset res cursor v) (set cursor (+ 1 cursor))) ;; sort so we always return the same list for the same object - (table.sort result) - result) + (table.sort res) + res) (local join table.concat) |
