5 ms·
farolero is a full, thread-safe implementation of Common Lisp conditions and restarts for Clojure. Most of the other implementations are incomplete or fail in c
by suskeyhose 5y ago
farolero is a full, thread-safe implementation of Common Lisp conditions and restarts for Clojure. Most of the other implementations are incomplete or fail in cases related to threading, or don't include a debugger. This implementation is full.
I have plans to make an nrepl-integrated system debugger for integration with cider, although the existing debugger is quite good already.
This library has just hit RC3, which includes a test suite adapted from ANSI-TEST, and is ready for release after a tiny bit more testing.
- fiddlerwoaroof 5y agoThis is pretty cool, conditions/restarts were one thing I always missed in my repl-driven workflow when writing Clojure. Now someone just needs to implement a reliable way to add/reload dependencies without restarting the REPL.
- harperlee 5y ago> Now someone just needs to implement a reliable way to add/reload dependencies without restarting the REPL. Alex Miller is working on this as an official clojure functionality, see the add-lib, add-lib2 and add-lib3 branches of deps.alpha. It's just brewing very slowly... hopefully with Tonsky now on board they are able to speed up this and other topics!
- nightwolf 5y agoDo you mean Fogus, or have I missed something?
- harperlee 5y agoYeah sorry; that would have been interesting, but fogus.
- fiddlerwoaroof 5y agoYeah, I’ve seen this work. It’s a bit annoying to me because the boot team basically solved this problem years ago too, but the Clojure core team seems to suffer from NIH syndrome. The other issue, though, is that I think the JVM and a couple of Clojure’s core design decisions are hampering the “everything is reloadable” workflow you get with Common Lisp: in CL, I can leave my REPL running for months and load five or six projects in parallel with no problem. In Clojure, I’ve found that I’m continuously restarting the REPL because things like protocol implementations are hard to reload cleanly.
- fiddlerwoaroof 5y agoAlso, ASDF makes the concept of a “project” a first class feature in the language: of the various Clojure tools around, only boot took this approach.
- NoahTheDuke 5y agoProtocols being tightly bound to their implementation in Java is a real bummer. Makes using them much more difficult and brittle than an equivalent CLOS-style system.
- lenkite 5y agoI believe it would help if you could add a paragraph giving a brief intro to what the condition system means and detailing the advantages of the system for folks who are familiar with Clojure but not with Common LISP.
- jnxx 5y agoHere is an introduction by Peter Seibel: http://www.gigamonkeys.com/book/beyond-exception-handling-conditions-and-restarts.html http://www.gigamonkeys.com/book/beyond-exception-handling-co... (it is a chapter from "Practical Common Lisp", an really excellent book!)