Skip to content

Instantly share code, notes, and snippets.

@xfire
Created September 7, 2011 11:38
Show Gist options
  • Save xfire/1200346 to your computer and use it in GitHub Desktop.
Save xfire/1200346 to your computer and use it in GitHub Desktop.
clojure dynamic binding
user=> (defn slow-double [n] (Thread/sleep 100) (* n 2))
#'user/slow-double
user=> (defn calls-slow-double [] (map slow-double [1 2 1 2 1 2]))
#'user/calls-slow-double
user=> (calls-slow-double )
(2 4 2 4 2 4)
user=> (time (dorun (calls-slow-double)))
"Elapsed time: 601.008572 msecs"
nil
user=> (defn demo-memoize []
(time
(dorun
(binding [slow-double (memoize slow-double)]
(calls-slow-double)))))
#'user/demo-memoize
user=> (demo-memoize )
"Elapsed time: 200.975626 msecs"
nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment