4 ms·
It's not that "analogous". Take a peek, it doesn't unwind the stack unless you ask it to, which gives it much more power than exception handling in languages s
by minerjoe 6y ago
It's not that "analogous".
Take a peek, it doesn't unwind the stack unless you ask it to, which gives it much more power than exception handling in languages such as Java.
- outworlder 6y agoThat's the problem with Lisp features - you don't get to appreciate how powerful they are until you are way deep in the woods, at which point you are now another 'convert' trying to convince others to follow. I like Scheme but having seen what the condition system could do on Lisp Machines decades ago makes me feel like we are currently living in a computing dark ages.
- phoe-krk 6y agoI sincerely hope that my book aids this problem that you are speaking of - both by allowing programmers and implementers of other languages use the techniques that originate in Lisp, and to try and bash at the Lisp-as-a-meme prejudice that I've seen in many places by showing what the condition system is actually useful for.
- zhangsen 6y agoAre there some other languages support something like condition system in Common Lisp?
- phoe-krk 6y agoDylan! (Which is commonly called a Lisp dialect due to its internal structure, even though it lacks homoiconicity.) See https://opendylan.org/documentation/intro-dylan/conditions.html https://opendylan.org/documentation/intro-dylan/conditions.h... There are implementations of condition systems as libraries, too. Copying links from my book: * Python: https://github.com/svetlyak40wt/python-cl-conditions https://github.com/svetlyak40wt/python-cl-conditions * Clojure: https://github.com/clojureman/special https://github.com/clojureman/special * Ruby: https://github.com/michaeljbishop/mulligan https://github.com/michaeljbishop/mulligan * Perl: https://metacpan.org/release/Worlogog-Incident https://metacpan.org/release/Worlogog-Incident, https://metacpan.org/release/Worlogog-Restart https://metacpan.org/release/Worlogog-Restart
- TurboHaskal 6y agoThis is exactly the issue. Growing appreciation for this kind of stuff often requires a level of understanding that a lot of the people in the industry lack. You can't miss what you don't know about. I'll give some examples: You cannot appreciate the extreme simplicity of Pascal or other Wirthian languages if you never wrote your own compiler. For the average developer, it is just a procedural language with weird excessive syntax, annoying separation between interface and implementation and way too picky about where you declare your variables. You cannot appreciate Forth if you don't know how the machine works and see the beauty of threaded code. Forth then just becomes this reverse Polish notation thing that some crazy people love. They really must be nuts, as I'm solving my problems with C and JavaScript just fine. Why do they like RPN so much and why can't they just shut up about it? So the same goes for Lisp and Smalltalk. These are not regular languages, they have operating system aspirations. What a small group of people were doing with Lisp Machines when everyone else were using line editors is completely unknown for the average developer, they just see the parenthesis and run away. As you mention it is also the reason why I'm partial to Common Lisp over something like Scheme and Clojure. I mean, I like those a lot as well, but they don't offer me much over plain JavaScript and I'd rather use APL :)
- Jtsummers 6y ago> You cannot appreciate the extreme simplicity of Pascal or other Wirthian languages if you never wrote your own compiler. For the average developer, it is just a procedural language with weird excessive syntax, annoying separation between interface and implementation and way too picky about where you declare your variables. You don't need to have written a compiler. Just have wanted real modularity. You can get it with some popular and mainstream OO languages (Java, C#), but it's horribly broken in many other mainstream languages (C++). Separating interface from implementation shines when dealing with larger teams, and can really be nice for compile times which improves feedback loops.
- oalae5niMiel7qu 6y agoYou haven't seen a fast feedback loop until you've programmed in Lisp. And it has none of that "interface vs implementation" nonsense.