I'd like to submit a new tracing library to clojure.contrib. Please
try it out and let me know if it is suitable.

The existing clojure.contrib.trace macros allow you to explicitly
trace any expression or redefine a function with deftrace so that it
is traced. But deftrace doesn't work with functions with multiple
arity or comment string. To trace many functions, you'd have to do a
mass change of your defns to deftrace.

This new library keeps track of functions you're tracing, allows you
to toggle trace on/off on on functions, and trace every function in a
namespace. If you reload a function, tracing is disabled for that
function. The toggle trace and untrace all functions could be used to
fill some missing pieces in emacs/slime/swank-clojure. It shouldn't be
too difficult to make a simple profiler from it.

The user interface is:

(defmacro toggle-trace
  "Toggles tracing of function f"
  [f]

(defmacro trace-on
  "Turn trace on for function f"
  [f]

(defmacro trace-off
  "Turn trace off for function f"
  [f]

(defn trace-ns
  "trace everything in the namespace ns. Don't try to trace
clojure.core."
  [ns]

(defn untrace-ns
  "untrace everything in the namespace ns"
  [ns]

(defn untrace-all
  "untrace everything and clean out traced-map"
  []

I'm pasting the code to http://paste.lisp.org/display/71652.

-Craig
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to