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