Skip to content

Instantly share code, notes, and snippets.

@igrishaev
Last active August 22, 2023 17:28
Show Gist options
  • Save igrishaev/9662099637ba2ba390dc173aaa722ca0 to your computer and use it in GitHub Desktop.
Save igrishaev/9662099637ba2ba390dc173aaa722ca0 to your computer and use it in GitHub Desktop.
(letfn [(->iter [coll]
(clojure.lang.RT/iter coll))
(has-next? [iter]
(.hasNext ^java.util.Iterator iter))
(next! [iter]
(.next ^java.util.Iterator iter))]
(defn map!
([f coll]
(mapv f coll))
([f coll & colls]
(let [iters (map ->iter (cons coll colls))]
(loop [acc! (transient [])]
(if (every? has-next? iters)
(let [item (apply f (map next! iters))]
(recur (conj! acc! item)))
(persistent! acc!)))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment