Skip to content

Instantly share code, notes, and snippets.

@carcigenicate
Created September 17, 2018 16:28
Show Gist options
  • Save carcigenicate/c321f010f8451fa98cc6a81a8866a80a to your computer and use it in GitHub Desktop.
Save carcigenicate/c321f010f8451fa98cc6a81a8866a80a to your computer and use it in GitHub Desktop.
(defmacro trace-letfn [fnspecs & body]
(let [mod-fns (mapv #(let [[name args & body] %]
`(~name ~args (t/trace-fn-call '~name (fn ~args ~@body) ~args)))
fnspecs)]
`(letfn ~mod-fns ~@body)))
(trace-letfn [(f [n] (println "Thing" n))
(g [m] (println "Somethin else" m))]
(f 1)
(g 2))
TRACE t1951: (f 1)
Thing 1
TRACE t1951: => nil
TRACE t1952: (g 2)
Somethin else 2
TRACE t1952: => nil
=> nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment