Skip to content

Instantly share code, notes, and snippets.

@pushpankar
Forked from carcigenicate/trace-letfn.clj
Created April 19, 2025 05:16
Show Gist options
  • Save pushpankar/259267917b50941ad115aaf889af87f1 to your computer and use it in GitHub Desktop.
Save pushpankar/259267917b50941ad115aaf889af87f1 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