5 ms·
Hello -- I wrote this! It's still very much a work in progress.
by atgreen 2y ago
Hello -- I wrote this! It's still very much a work in progress.
- whalesalad 2y agoA pragmatist will point to this and say, why not Clojure? Can you share more about what keeps you using SBCL instead of Clojure?
- jhbadger 2y agoOr for that matter, Armed Bear Common Lisp (real CL implemented in the JVM rather than Clojure which is more like Scheme mixed with its own ideas). Still, it's a neat trick, running Java classes on a Lisp that isn't in the JVM itself.
- remexre 2y agoI thought Clojure already had JVM interop?
- codr7 2y agoClojure runs on the JVM; this is the opposite, Java in a CL compiler. Besides, there's more to Lisp than Clojure.
- eadmund 2y agoWell, for one thing Clojure is not Lisp. It’s a neat language (and is informed by experiences with Lisp), but it’s a different thing.
- jgalt212 2y agoWhat's the biggest thing your mind that makes Clojure not Lisp?
- kerkeslager 2y agoeadmund probably means that Closure is not Common Lisp. Common Lispers often refer to Common Lisp as just "Lisp". This makes sense in Common Lisp circles because it's obvious which Lisp they're talking about. However, some Common Lispers will refuse to code switch[1] when around non-Common Lispers, with the implicit assertion that Common Lisp is the only true Lisp. This is, of course, just gatekeeping snobbery. When normal people say "Lisp" they're referring to a group of languages which includes Scheme, Clojure, Racket, Janet, Emacs Lisp and of course, Common Lisp, and probably a few others. To be clear, not all Common Lisp folks are like this. The vast majority are very nice people. But there are enough bad apples that you'll inevitably run into this "correction" if you discuss Lisp dialects publicly for long enough. [1] https://en.wikipedia.org/wiki/Code-switching https://en.wikipedia.org/wiki/Code-switching
- kazinator 2y agoI doubt you can find a single Clojure-is-not-Lisp person who denies that McCarthy's LISP 1 and 1.5, MacLisp, BBN Lisp, Interlisp, Lisp Machine Lisp, ZetaLisp, Portable Standard Lisp, Emacs Lisp, XLisp, VAX Lisp, ISLisp, EuLisp and even AutoLISP ... are Lisp. I made a Lisp. It's not Common Lisp, yet I've never had anyone tell me it's not Lisp. I believe Clojure is better than AutoLISP. I wouldn't use McCarthy's LISP 1.5 for anything; it mainly of historic interest. But it is undeniably Lisp. "Lisp or not" is not the same thing as "good or not". It's more like "different or not". Difference is what makes certain words apply to some things and not apply to some other things. This is not some gender issue of inclusivity, like what is a woman. It has nothing to do with being nice or not. It's a technical matter of using the correct term for the things to which it applies.
- kerkeslager 2y ago> I doubt you can find a single Clojure-is-not-Lisp person who denies that McCarthy's LISP 1 and 1.5, MacLisp, BBN Lisp, Interlisp, Lisp Machine Lisp, ZetaLisp, Portable Standard Lisp, Emacs Lisp, XLisp, VAX Lisp, ISLisp, EuLisp and even AutoLISP ... are Lisp. Please tell me you aren't making the argument that things with "Lisp" in the name are Lisps. If only Steele and Sussman had thought to call it SchemeLisp instead of just Scheme, we could have avoided this whole semantic debate. > I made a Lisp. It's not Common Lisp, yet I've never had anyone tell me it's not Lisp. Me too! I've never had anyone tell me anything about the Lisp I made, actually. > This is not some gender issue of inclusivity, like what is a woman. It has nothing to do with being nice or not. Respectfully, I disagree. Being pedantic isn't nice, and this "Lisp refers to Common Lisp" idea was explicitly about politically excluding Scheme from the community all the way back when Naggum started it[1]. > It's a technical matter of using the correct term for the things to which it applies. The problem with what you're saying is that words apply to concepts based on usage, not based on what a small group of pedants think they should apply to. De facto people apply the term "Lisp" to both Scheme and Closure, therefore the term applies. That's how the English language works, words that are widely applied to a thing are taken to mean that thing. And sometimes the meanings of words change over time because common usage changes. Like it or not, common usage moved beyond "Lisp" meaning... whatever you want it to mean. People refer to Clojure as a Lisp now. [1] https://web.archive.org/web/20250000000000*/https://groups.google.com/forum/#!topic/comp.lang.lisp/Bj8Hx6mZEYI[1-25-false] https://web.archive.org/web/20250000000000*/https://groups.g...
- miroljub 2y agoClojure is a Lisp, precisely, a language from the List family of languages. Other known examples of Lisps are Emacs Lisp, Common Lisp and Scheme.
- atgreen 2y agoI'm sure they would, but I have the freedom to not be practical! The journey is the destination. Common Lisp is fun to code in, and the tooling is top-tier.
- sushidev 2y agoCould you share some of what is great about the cl/sbcl tooling?
- atgreen 2y agoIf you are writing services for a platform like kubernetes, the inner-loop development cycle is unmatched. You just connect your editor to the lisp image running in k8s, and with a couple of keystrokes, your code changes are shipped to the target container, replacing what's running live -- as native machine code. You can debug in a repl, handle conditions (exceptions) interactively with restarts, etc etc.
- sushidev 2y agoYep makes sense. I worked with clojure for many years so it’s familiar to me. Iterating via the repl is a great way to develop software. I was wondering if sbcl has good tooling for code navigation, completion, debugging.
- koito17 2y ago> why not Clojure? Common Lisp implementations like SBCL have static typing, performance, instant (and effortless) compilation to native machine code, and so on. No need to deal with Leiningen or copy-pasting a deps.edn / build.clj template across projects. If I want to experiment with SIMD intrinsics with the comfort of a REPL, I can't do that with Clojure, but I can do that with SBCL and a built-in library (SB-SIMD). Note: I have used Clojure professionally and still use it for some personal projects, but I try to be aware of the trade-offs when deciding to use Clojure / Common Lisp / any other programming language.
- whalesalad 2y agodo you have any reference libraries/apps/projects you could refer me to? curious to see what a healthy and idiomatic project looks like.
- thunkingdeep 2y agoI am a hobbyist Scheme programmer, and I can chime in and say that Clojure stack traces are among the worst I’ve ever seen in my life. Chez errors aren’t the best in the world, but anything beats those JVM ones, imo.
- hencq 2y agoVery cool! I'm curious whether you're using it (or planning to use it) yourself for anything serious or if it's just to see if it could be done. Are you planning to support classes beyond Java 8 at some point?
- atgreen 2y agoI'll definitely use it when it becomes usable. And, yes, it needs to support newer versions of Java. Crawl.. walk.. run. But you are right.. part of my motivation was just to see if it was possible. Many years ago, I worked on gcj, which was similar in concept, except that it mapped Java classes to C++ classes (as implemented by g++). I've been on a Common Lisp kick for the past few years, so it seemed like a fun challenge. The fact that the OpenJDK class libraries are free software now makes this more practical.
- rootnod3 2y agoI definitely get the Common Lisp kick. I dabbled with it before, but then got sidetracked by other languages and back then the REPL didn't click for me. After I understood the power of the live image concept though (and after switching to Emacs), I just want to do every personal project in CL only.
- skapadia 2y ago@atgreen - Would love to hear what key lessons / takeaways you've learned while working on this project?
- deleted 2y ago[deleted]
- wbl 2y agoAre you planning to do a Futamura projection?
- atgreen 2y agoNo. It's a simple transpiler for now.