> Clojure in Clojure would be a nice start to have e.g. a LLVM frontend. > But it's really quiet as far as CiC goes, right?
It should be mentioned that writing a Clojure compiler is not a very long task it basically comes down to the following tasks: 1) Implement the persistent classes (PersistentList, PersistentHashMap, etc.) 2) Implement the LispReader 3) Implement the Compiler 4) Start fixing bugs in core.clj About a month ago I started implementing Clojure on the Python VM. It's still in pre-alpha, but the current system can compile and run over 500 lines of clojure's core.clj. (https://github.com/halgari/clojure-py) Now, the fun part is adapting the "clojure-jvm way" of doing things to a system that your tool-chain prefers. So, for instance, in Java we have Namespace.java to handle namespace creation, and tracking. But in Python the module system works perfectly fine for us. So clojure.lang.Namespace doesn't even exist in clojure-py. Other clojure functions such as "cast" have absolutely no use at all in clojure-py and are therefore removed. However, other functions like "vec" are implemented in pure clojure code in clojure-py, while they are implemented in java code in clojure-jvm So next we have to ask a different question, do you want your clojure-objc compiler to depend on java to run? This is what clojurescript does. It does not have a compiler written in javascript. Instead the compiler is written Java, and this compiler outputs javascript. This means that all clojurescript macros must be compile-able by clojure-jvm, while the rest of the code has to be clojurescript compatible. In clojure-py the compiler is written in python, and is completely independent from clojure-jvm Finally you'll need to research how hard it is to get llvm to interface with the objc runtime. So if I say this in clojure: (instance? clojure.lang.IPersistentList x) What llvm functions will you call to a) find clojure.lang.IPersistentList and b) how will you determine the class of x. Some things to think about, Timothy -- 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