A few things to consider: 1. Performance is a key consideration. The speed of the compiler is a major determinant of startup time for Clojure applications, which is very important to many people. Having the compilker written in Java probably helps a lot here - it is generally easier to write high performance JVM code in pure Java. Yes, it's also possible to write fast code in Clojure, but it typically isn't idiomatic and is much harder to write / maintain. It would be quite a challenge to write a compiler with equivalent performance in pure, idiomatic Clojure. 2. YMMV but while I find that Clojure is extremely productive for writing new code, it really helps to have a type system when maintaining code. When maintaining a complex beast like the Clojure compiler, I don't think Clojure is actually going to be much better than well-written Java in this regard. 3. The bits of Clojure that users interact with directly (clojure.core etc.) are mostly already written in Clojure. Curious folks can still examine the Clojure source code for the core functions. The Java stuff is mostly around the compiler and implementation details of data structures etc.
Personally, I think this falls into the "if it isn't broken, don't fix it" category..... On Monday, 24 August 2015 23:23:07 UTC+8, William la Forge wrote: > > Well gosh, Timothy, isn't Clojure code easier to maintain/extend than Java > code? There's a lot less boiler plate at least. Or is it just that Clojure > is superior mostly when multi-threading because of its use of immutables? > > Are you really saying that Clojure is not an advantageous choice for > implementing Clojure? Perhaps as a newbie I'm just oversold on Clojure? Or > are you just taking a short-term view and saying that a rewrite would carry > no IMMEDIATE advantages. Of course, the counter for that is that a rewrite > ALWAYS carries immediate advantages. :D > > On Monday, August 24, 2015 at 11:10:05 AM UTC-4, tbc++ wrote: >> >> " I would think that having Clojure implemented entirely in Clojure >> would have a number of advantages." >> >> I think that's the place you should start. List those advantages. >> Clojure-in-Clojure would be a "nice" thing to have...but I can't really >> think of any major features it would enable that aren't possible in Clojure >> already. >> >> One thing that would be nice to have would be to switch Clojure's Java >> interfaces over to protocols, e.g. `Counted` could be a protocol instead of >> a interface. But that could be done on the existing codebase, without the >> need for a full rewrite. >> >> Timothy >> >> On Mon, Aug 24, 2015 at 9:03 AM, William la Forge <lafo...@gmail.com> >> wrote: >> >>> Step 2 in the classical bootstrap process for a language is to rewrite >>> it in itself. Clojure is more than capable of this. But Clojure continues >>> to rely on Java code for its implementation. >>> >>> Is there a reason why this was not done? Efficiency issues? A rush to >>> create something usable? I would think that having Clojure implemented >>> entirely in Clojure would have a number of advantages. >>> >>> I am sure there was a deliberate decision, not to complete the bootstrap >>> process. Is this documented anywhere? >>> >>> Just being a nosy newbie. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> “One of the main causes of the fall of the Roman Empire was that–lacking >> zero–they had no way to indicate successful termination of their C >> programs.” >> (Robert Firth) >> > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.