(fn contains? [t x] "does sequence t contain element x?" (accumulate [found false _ v (ipairs t) &until found] ; escape early (or found (= x v)))) (fn keys [t] "takes a table returns a sequential list of its keys" (local out []) (each [k _ (pairs t)] (table.insert out k)) out) (fn has-key? [t k] (contains? (keys t) k)) {: contains? : keys : has-key? }