Skip to content

Instantly share code, notes, and snippets.

@arohner
Created April 2, 2012 23:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save arohner/ed2a1de1af8dc047c5f6 to your computer and use it in GitHub Desktop.
Save arohner/ed2a1de1af8dc047c5f6 to your computer and use it in GitHub Desktop.
callable
(defn resolve-var-str [s]
(let [[_ ns v] (re-find #"#'([^/]+)/(.+)" s)]
(ns-resolve (symbol ns) (symbol v))))
(defn call* [pfn]
(let [v (-> pfn :v resolve-var-str)]
(apply v (-> pfn :args))))
(defrecord SerializableFn [v args]
clojure.lang.IFn
(invoke [this]
(call* this))
(call [this] ;; j.u.c.Concurrent
(call* this))
(run [this] ;; j.l.Runnable
(call* this)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment