Be careful of deftrace. It has a bug that crashes when the defn'ed funcs have string comment on the top of the func
On Jan 23, 7:02 am, ataggart <alex.tagg...@gmail.com> wrote: > On Jan 22, 6:27 pm, Mike Meyer <mwm-keyword-googlegroups. > > > > 620...@mired.org> wrote: > > On Fri, 22 Jan 2010 17:25:39 -0800 > > > ajay gopalakrishnan <ajgop...@gmail.com> wrote: > > > I dont mind using println. The problem is that needs to be inside a do or > > > when ... and that is not really part of my code. When the time comes to > > > remove the prints, i need to remove all these do blocks too. I can leave > > > them as it is I guess, but then it is not neat and non-idiomatic. From all > > > the replies, it seems that Debugging is going to be a pain in the Lisp > > > style > > > languages. How do people in Lisp/Scheme debug it? > > > In the REPL. That's a pretty complete debugger, all by itself. In > > something like SLIME, you get the ability to examine the call stack, > > etc. while things are running. > > > The trace package just dumps arguments/results of functions while they > > run. It's a primitive tool, but better than println's in many cases: > > > user it, then use dotrace: > > > user> (use 'clojure.contrib.trace) > > nil > > user> (defn foo [coll] (reduce + coll)) > > #'user/foo > > user> (defn bar [coll] (map inc coll)) > > #'user/bar > > user> (dotrace [foo bar] (foo (bar [1 1 1]))) > > TRACE t7043: (bar [1 1 1]) > > TRACE t7043: => (2 2 2) > > TRACE t7044: (foo (2 2 2)) > > TRACE t7044: => 6 > > 6 > > user> (dotrace [foo +] (foo (bar [1 1 1]))) > > TRACE t7071: (foo (2 2 2)) > > TRACE t7072: | (+ 2 2) > > TRACE t7072: | => 4 > > TRACE t7073: | (+ 4 2) > > TRACE t7073: | => 6 > > TRACE t7071: => 6 > > 6 > > > and so on. > > > <mike > > -- > > Mike Meyer <m...@mired.org> http://www.mired.org/consulting.html > > Independent Network/Unix/Perforce consultant, email for more information. > > > O< ascii ribbon campaign - stop html mail -www.asciiribbon.org > > See, I *knew* there had to be a way to do it! Clearly I wasn't > grokking the docs for dotrace. If the authors of of c.c.trace are > amenable, I'm inclined to add this functionality to a variant of the > c.c.logging/spy macro, something like: > > (spy [foo bar] (foo (bar [1 1 1]))) -- 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 Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en