Clojure is awesome, no doubt.

But I feel it  is distinctly lacking a feature that would make it a
power-house lisp.

I was working with MIT scheme the other day and I noticed just how
very nice having a debug break in the repl is. Once can look at the
bindings, execute programs within a particular frame, etc. MIT Scheme
has a very nice IDE(Edwin) based debugger too. Of course this is
expected as standard by all Common Lisp and Smalltalk users.

Periodically people do look for such a feature in clojure. I saw at
least a few threads here about this subject.

I have the following questions:

1) Is such a feature based on a Condition system? Meaning, is a
Condition system necessary to have a fully featured debugger? I am not
well versed in implementation details, am merely an applications
developer. So please do enlighten.

2) As Clojure-in-clojure is implemented, is there any plan to include
such features? Or do we just live with JVM based exceptions stack
trace and Java based debuggers. Our lot in life. How many ever tools
like Mission Control or  VisualVM the jvm people may put out there,
those just don't cut it when it comes to repl based developing.

3) I suppose something more meaningful needs to be printed out in the
stack trace. Will Clojure-in-clojure have a proper type system as
well? Instead of relying on JVM/Java class types? Meaning, when I type
"+" in repl to see what it is bound to, I won't be seeing much of the
following kinds of things in the repl --
 #<core$_PLUS___3649 clojure.core$_plus___3...@160e8a2>. Instead when
I ask the repl what "+" is bound to, it'll nicely tell me that it is a
compiled function or some such.

Having a language based debugger, like the one most CL systems do, is
a VERY VERY nice feature that makes a heck of a lot of difference to a
person thinking the lisp way. It keeps the programmer in the flow and
doesn't break it. In my opinion, it makes the repl 10 times more
powerful.
People coming in from C++, Ruby, Python, Java, etc background won't
miss such things much.  But people who started off with their
programming life with Common Lisp or MIT Scheme will sorely miss
them.

This is a request for serious consideration of a repl debug system
with the ability to look at bindings in stacks and execute expression
is a particular frame. It will be great if other people from CL/
Smalltalk background pitched in and explained just how useful this
will be.


Whatever your response may be to these questions, please just don't
say that  Exceptions is the JVM way and that is what clojure will do.
If that was the attitude, we will all be using Java and eclipse. And
no one will look forward to features like InvokeDynamic and TCO.

Thanks for the continuing exceptional effort with Clojure. It is a joy
to program in.

-- 
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