Skip to content

Instantly share code, notes, and snippets.

View mthvedt's full-sized avatar

Mike Thvedt mthvedt

View GitHub Profile
@mthvedt
mthvedt / gist:5578230
Created May 14, 2013 18:24
Strange behavior with ^:const closures
user=> (defn foo1 [_] "foo1")
#'user/foo1
user=> (let [bang (with-meta 'bang {:const true})] (intern *ns* bang foo1))
#'user/bang
user=> (bang 1)
"foo1"
user=> (def foo1 (let [x "foo1"] (fn [_] x)))
#'user/foo1
user=> (let [bang (with-meta 'bang {:const true})] (intern *ns* bang foo1))
(defn gen-interleave [coll i->vals]
(loop [r [] coll2 coll i 0]
(if (contains? i->vals i)
(recur (conj r (get i->vals i)) coll2 (inc i))
(if (seq coll2)
(recur (conj r (first coll2)) (rest coll2) (inc i))
r))))
(defn gen-rpartial [f themap]
(fn [& args] (apply f (gen-interleave args themap))))