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

Reply via email to