5 ms·
Clojure also has better debugging experience. This is a bare-bones workflow of a guy who doesn't use the best tools available in Clojure.
by dragandj 9y ago
Clojure also has better debugging experience. This is a bare-bones workflow of a guy who doesn't use the best tools available in Clojure.
- blain_the_train 9y agoCould you provide links to this better debugger
- blain_the_train 9y agoFound them in other comments, I don't see anything that's native to clojure though, not like pdb is for python at least
- emidln 9y agoDebugging, like most things in clojure, is a library. You can view the implementation (as an nREPL middleware) here[1]. It's possible to use this debug middleware from any random nrepl client, but I'm not aware of any that actually implement a command-line debugger such as you get with python's pdb. I suspect, but don't have any time or inclination to verify, that implementing a basic command-line debugger using this library would be a weekend hack. I suspect this debugger is far more useful integrated into your editor than stand-alone since clojure isn't really a file/line-oriented language (which would make selecting forms hard). [1] https://github.com/clojure-emacs/cider-nrepl/blob/master/src/cider/nrepl/middleware/debug.clj https://github.com/clojure-emacs/cider-nrepl/blob/master/src...
- flavio81 9y agoBetter debugging experience than Common Lisp? Are you sure? Do you know what happens when you hit a runtime error in Common Lisp? You get a full backtrace of all the calls that lead to the error, the error code, the error explanation, and THEN a lot of options that you can do to make your code keep working "on the fly", for example the runtime environment will give you the following options: 0: [KEEP-OLD] Keep symbols already accessible FOO (shadowing others). 1: [TAKE-NEW] Make newly exposed symbols accessible in FOO, uninterning old ones. 2: [RESOLVE-CONFLICT] Resolve conflict. 3: [RETRY] Retry SLIME REPL evaluation request. 4: [*ABORT] Return to SLIME's top level. 5: [ABORT] Abort thread (#<THREAD "new-repl-thread" RUNNING {10060E47B3}>)