On Jan 22, 5:25 pm, 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? > > > > On Fri, Jan 22, 2010 at 5:04 PM, ataggart <alex.tagg...@gmail.com> wrote: > > > On Jan 22, 4:13 pm, Mike Meyer <mwm-keyword-googlegroups. > > 620...@mired.org> wrote: > > > On Fri, 22 Jan 2010 10:08:45 +0200 > > > > Miron Brezuleanu <mbr...@gmail.com> wrote: > > > > Hello, > > > > > On Fri, Jan 22, 2010 at 3:14 AM, ajay gopalakrishnan < > > ajgop...@gmail.com>wrote: > > > > > > Hi, > > > > > > I usually debug by adding println statements. How can I achieve the > > same > > > > > effect in Clojure. I don't think I can introduce println at arbitrary > > places > > > > > to figure out at which step is the algorithm failing. > > > > > I also use 'do's as others have suggested. Another trick is to add > > dummy > > > > variables in lets just to be able to print something. For instance, > > > > > (let [a 1 > > > > b 2 > > > > dummy1 (println "stuff") > > > > c 3] > > > > ...) > > > > > (this could be done by putting the 2 for b in a do and adding the > > println in > > > > the do, but that would be more invasive - with the dummy variable, it's > > just > > > > add/uncomment or delete/comment out one line). > > > > Um, I'm surprised that no one has mentioned clojure.contrib.trace. > > > Given that Clojure is mostly functional, those "debugging" printlns > > > will mostly be arguments to functions, or values coming out of > > > them. The trace package lets you evaluate an expression at the repl, > > > tracing the values in and out of a user-specified set of functions > > > during the evaluation process. > > > > That's what I'd consider the idiomatic way to do debugging in a LISP. > > > > <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 > > > I haven't used c.c.trace since it can't be left in place without a > > performance hit. It seems like it might be useful at the repl, but I > > haven't figured out how to make it do anything interesting, e.g.: > > > user=> (defn foo [coll] (reduce + coll)) > > #'user/bar > > user=> (defn bar [coll] (map inc coll)) > > #'user/foo > > user=> (trace (foo (bar [1 1 1]))) > > TRACE: 6 > > 6 > > > Given that trace is a function and not a macro, this result isn't > > surprising. I'm sure there *is* a way to actually trace such a call, > > but I haven't figured it out. It occurs to me that such functionality > > might be worth dropping into c.c.logging, something akin to the spy > > macro. At least then we could leave the code in place. > > > -- > > 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<clojure%2bunsubscr...@googlegroups.com > > > > > For more options, visit this group at > >http://groups.google.com/group/clojure?hl=en
Debugging is not exactly the same as logging (though the latter might help with the former). I infer you mean logging, hence you should use a logging library that allows you to *leave* the log calls in the code such that they to be enabled/disabled via configuration, but have negligible performance impact when disabled. See http://richhickey.github.com/clojure-contrib/logging-api.html -- 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