<div dir="ltr"><div><div><div><div><div>ABCL is older, yes. I can't look up the dates now, but it started as an embedded interpreter for the J editor surely more than a decade ago, and even when it became a standalone project I think Clojure was still in Rich's head at best. That said, ABCL never had even .1% of the community Clojure has, which is a pity. ABCL is far from perfect, but with a solid open source community contributing to it, it could do everything Clojure does. Many of Clojure's core features are just a library away:<br><br></div> - immutable data structures -> FSet<br></div><div> - concurrency primitives -> LParallel<br></div> - STM -> CL-STM (I think)<br></div> - ClojureScript -> Parenscript<br><br></div>etc. The only things that are still missing from ABCL proper are the ability to generate Java classes from Lisp and an easy to use ahead-of-time compiler (to produce libraries readily usable from Java and other languages). The ecosystem is missing more things, like Java IDE plugins and a Java/Maven savvy build tool (I'm sure ASDF could be hacked to become that tool). Clojure once didn't have those, too.<br><br></div><div>Besides ABCL, there are other Lisps for the JVM, most notably Kawa, a Scheme which has been existing for many years, it's older than ABCL I think.<br></div><div><br></div>I don't want to start a war either, and I'm sure Clojure benefits from its clean room design and implementation, but it's sad to see so many wheels reinvented, so much effort wasted.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 4 July 2016 at 23:17, Alexandre Rademaker <span dir="ltr"><<a href="mailto:arademaker@gmail.com" target="_blank">arademaker@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I though that ABCL is older than Clojure , am I wrong ?!<br>
<br>
One big frustration for me was the error handling ! Errors in Clojure are exposed as Java errors, we don't have the amazing CL handlers.<br>
<br>
Alexandre<br>
Sent from my iPhone<br>
<div class="HOEnZb"><div class="h5"><br>
> On 4 de jul de 2016, at 17:07, Tom Emerson <<a href="mailto:tremerson@gmail.com">tremerson@gmail.com</a>> wrote:<br>
><br>
> On Sun, Jul 3, 2016 at 7:25 PM, David McClain<br>
> <<a href="mailto:dbm@refined-audiometrics.com">dbm@refined-audiometrics.com</a>> wrote:<br>
>> My impressions from a few years ago was that Clojure was another language<br>
>> built for the heck of it, much like Python.  Not particularly well designed[...]<br>
><br>
> Rich Hickey didn't create Clojure just for the heck of it: he had very<br>
> specific goals in mind and, IMHO, put a lot of thought into the design<br>
> of the language and the decisions he made given the design space<br>
> (running within the overall JVM environment) and the warts he saw in<br>
> other languages, within and without the Lisp family. There are<br>
> numerous presentations available online where Rich talks about the<br>
> development of Clojure: if you're interested I think they would show<br>
> you that his design<br>
><br>
>> under the control of one individual[...]<br>
><br>
> I'm not sure you can compare Python's BDfL with Rich's position with<br>
> Clojure. I don't have a concrete example, but Clojure feels less<br>
> bound-up in its creator's blinders than Python. That can also be a<br>
> side-effect of its Lisp-nature though.<br>
><br>
>> with lots of cheerleading from the small audience.<br>
><br>
> Which isn't a bad thing. Any new language requires its evangelization.<br>
> I would also posit that from outside the community, Common Lisp is<br>
> viewed the same way.<br>
><br>
> [...]<br>
>> And I know<br>
>> essentially nothing of the Java world, and whether or not it is a good thing<br>
>> that they are migrating to Clojure.<br>
><br>
> That's the crux of it: if you have to co-exist in a Java universe and<br>
> want to write in a Lisp, your options are Clojure or Armed Bear Common<br>
> Lisp. ABCL is relatively recent and does not have the community<br>
> support that Clojure does. The tooling available for Clojure is quite<br>
> good, insofar as its Emacs tools are excellent and support for the two<br>
> most common Java IDEs (Eclipse and IntelliJ) is steadily improving,<br>
> making the transition for Java developers much more friendly. The<br>
> software that I'm writing in Clojure is seen by our operations team as<br>
> "just another Java binary". It allows my software to integrate into<br>
> their existing monitoring and logging systems without them doing<br>
> anything different. I also have the entire Java/Scala library<br>
> ecosystem available to me: if I need something that doesn't exist in<br>
> Clojure I can usually find it in the Java world. The interop between<br>
> Clojure and Java is cleaner, in my limited experience, than that<br>
> between ABCL and Java.<br>
><br>
> While its a tired trope, cross-platform compatibility is good. I<br>
> develop on Mac OS X, continuous integration and deployment on Linux,<br>
> and my coworkers use generally use Windows. That's not uniquely a<br>
> Clojure feature: SBCL, CCL, and LW all run on these different<br>
> environments too.<br>
><br>
> There are parts of Common Lisp I miss when developing in Clojure,<br>
> especially the conditions system. I sometimes miss CLOS, but Clojure<br>
> has multimethod dispatch which is good enough for most cases.<br>
><br>
> I like both Clojure and Common Lisp, and see them as complementary<br>
> tools which I select depending on my needs at any given time. However,<br>
> there is a cognitive load in switching between them, and since most of<br>
> my work of late is in a Java world, I tend to stick with Clojure even<br>
> for nonce tools.<br>
><br>
> ClojureScript is amazing if you are creating tools or services that<br>
> need a web-based UI, whether for primary interaction or diagnostics.<br>
> The entire system can be written in Clojure, with the UI running on<br>
> the client browser. You can share code across projects: I have a set<br>
> of functions used to generate various sequence comparison statistics<br>
> that I share between command-line tools and a single-page web<br>
> application that is written in ClojureScript. Before moving to<br>
> ClojureScript I had to maintain two versions of these, one in<br>
> JavaScript and another in Clojure. I can even make these functions<br>
> callable from Java, if I cared to do so.<br>
><br>
> Anyway, I don't want to initiate a religious war between Clojure and<br>
> CL. I just wanted to give you some reasons why a (Common) Lisper may<br>
> also use and enjoy Clojure.<br>
><br>
> Peace,<br>
><br>
>    -tree<br>
><br>
> --<br>
> Tom Emerson<br>
> <a href="mailto:tremerson@gmail.com">tremerson@gmail.com</a><br>
> <a href="http://it-is-what-it-is.treerex.net" rel="noreferrer" target="_blank">http://it-is-what-it-is.treerex.net</a><br>
><br>
<br>
</div></div></blockquote></div><br></div>