2012-10-09 24 views
5

Clojure esas olarak Clojure dilinde yazılmıştır, ancak bir clojure derleyicisinin "ilk" bir versiyonu olmalıydı, ki bu da Java gibi başka bir şeye yazılmıştı.İlk clojure derleyicisi?

Bu derleyicinin kodu herhangi bir yerde kullanılabilir mi?

ilgim Zengin Hickey tavuk/yumurta sorununu ele bu şekilde görmek istiyorum, üretimsel değil, tamamen akademik olduğunu.

+8

Bu, github'un ilk taahhütlerinden biridir ... buradan ileriye doğru hareket edebilirsiniz. https://github.com/clojure/clojure/tree/894a0c81075b8f4b64b7f890ab0c8522a7a9986a – Kyle

+0

Son zamanlarda dinlediğim konuşmalardan, Clojure'un çekirdeğinde hala bir ton Java kodu olduğu anlaşılıyor. Henüz kaynağı yakalamadım, ancak bu çekirdeğin REPL/baz işlemlerini tamamlaması için yeterli olması ve bunun üstündeki tüm uzantıların Clojure'ın önyüklemesini kaldırması durumunda hiç şaşırmadım. Muhtemelen geri dönmek ve tamamen bir Clojure derleyicisi yapmak için çok fazla yarar değil, çünkü veri kaybı durumunda tarihsel bağımlılıkları beraberinde getirecektir. –

+1

@BrianKnoblauch Kaynağını almalı ve bir bakmalısın. Clojure'de kullandığınız birçok şey sadece java sınıflarıdır. Örneğin. Anahtar Kelimeler, Atomlar. Eğer Java ile familarsanız, kaynağa bakmayı ve bu şeylerin ne yaptığını anlamanızı kolaylaştırır. – Bill

cevap

3

Bunun ilgi alanlarınızla ilgili olup olmadığından emin değil, ancak Rich başlangıçta DotLisp adlı bir dil üzerinde çalıştı ve bunun için orijinal kod için temel olarak kullanılan ve sonunda tamamen değiştirilen JScheme çalışmasıyla başladı.

DotLisp buradadır: http://dotlisp.sourceforge.net/dotlisp.htm

JScheme buradadır: http://jscheme.sourceforge.net/jscheme/main.html

(bilgiler:. JScheme yazarlarından biri Brandeis profesörü Tim Hickey, Rich bilinen hiçbir ilişkisi)

9

Clojure derleyici java'da değil clojure'da yazılmıştır. Bu yüzden şimdiki versiyon merakınızı tatmin edecek bir versiyon. Makroların derleyicinin bir parçası olduğunu söylemek gerçekten mantıklı bir bakış açısıdır ve bunlar aslında clojure dilinde yazılmıştır, fakat bahsettiğiniz tavuk/yumurta problemiyle alakalı değildir, bunlar Java'da derleyici tarafından çözülür.

+1

, "Clojure in Clojure" filmini sonsuza dek görmekle ilgileniyor ... belki bir gün ... –

4

Derleyicinizi önyükleme, derleyicinizi derlediğiniz dil ile aynı dilde yazdığınızda sık karşılaşılan bir sorundur. Clojure durumunda

Ancak derleyici is written in Java, bu nedenle zor oyunlar gereklidir. eğlence historcal referans için

, GHC, (Haskell'de yazılmıştır) Haskell derleyici, başlangıçta Lazy ML ile derlendi.