Another potential problem is the data structure library. Can you implement vectors, maps, etc. in Clojure with acceptable performance?
Jules On 11 jul, 07:33, Tom Faulhaber <tomfaulha...@gmail.com> wrote: > > As awesome as this sounds, wouldn't it first require a > > native implementation to be created for each language prior to Clojure > > in Clojure running on the platform? > > No, you don't need to write a native port for each platform. > > Typically, you break the compiler into two broad parts: the platform > independent compiler and the code generator for each platform. (Each > of these has several parts internally.) > > The idea is that most of the compiler is in the platform independent > part. This creates some sort of intermediate (but fairly low-level) > representation of your program. Then you have a smaller part for each > system that generates the exact instruction set for that system. So > you have one big compiler/library bundle and n code generators, one > for each platform. All of this is written in the source language (in > this case Clojure). > > Now, the important thing is that the code generator for a target > machine X doesn't have to run *on* machine X. It can run on any > machine that supports the source language. > > So say we have Clojure-in-Clojure on the JVM and we decide that we > want to run Clojure in Flash by compiling to ActionScript. What we > need to do is create an ActionScript code generator for the Clojure > compiler. Then, on the JVM, we compile all of Clojure using the > ActionScript code generator instead of the JVM code generator. The > resulting output *is* native Clojure for Flash. Typically (though not > always), you'll go ahead and recompile your compiler from Flash > generating a "pure" Flash compiler. > > Thus, we never go through a "bootstrap" process on each new target > platform, we start by building a cross-compiler (which is identical to > the native compiler, but running on a platform other than the target) > and use that to get our bootstrap. > > In reality, porting Clojure-in-Clojure will be more difficult than > this because of things like differences in GC between platforms. Also, > I suspect the first versions of Clojure-in-Clojure won't be quite so > nicely divided as that. But this is the basic theory. > > Tom --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---