3 ms·
Ok right. That's why I feel in Clojure it doesn't provide as much, because it doesn't hook into a debugger. Having said that, practically, you wouldn't release
by didibus 9y ago
Ok right. That's why I feel in Clojure it doesn't provide as much, because it doesn't hook into a debugger.
Having said that, practically, you wouldn't release a tool which has users interact at the debugger, at least for any level of more serious commercial work no?
- guicho271828 9y agoCL's debugger is just a function, and the key is not to be distracted by the name "debugger". As said, you can have a custom "debugger" which does not look like a debugger, but a general purpose user interface in the text terminal. For example, being "custom", it can also hide the restarts which are only meaningful for true debugging (like restart 2,3,4). (see detail [1]) It is possible for a debugger to even invoke a GUI (imagine a debugger hook which pops up a window with an OK button) or a web UI (sends a Websocket message to the client, wait for the user to click something on the browser, receive a reply and invoke the restart). In fact, SLIME is written this way: it overloads the debugger hook, and it sends and receives messages to the Emacs TCP client (thus you can click on the menu on an Emacs buffer to restart -- this action is notified back to the underlying lisp process via TCP, which then calls invoke-restart). [1] You can obtain the list of restarts with COMPUTE-RESTARTS and filter unassociated restarts (similar to a method dispatch but is temporary / has dynamic extent -- see http://clhs.lisp.se/Body/09_adbd.htm http://clhs.lisp.se/Body/09_adbd.htm).
- didibus 9y agoI see, that's cool. Thanks for the info. So it can be used for certain form of event modeling, like a built in event system. That does sound cool.