Clojureは主にClojureで書かれていますが、おそらくJavaに書かれた「最初の」バージョンのclojureコンパイラが必要でした。最初のclojureコンパイラ?
このコンパイラのコードはどこから入手できますか?
私の関心は純粋に学術的であり生産的なものではなく、Rich Hickeyが鶏肉/卵の問題を処理する方法を見たいと思います。
Clojureは主にClojureで書かれていますが、おそらくJavaに書かれた「最初の」バージョンのclojureコンパイラが必要でした。最初のclojureコンパイラ?
このコンパイラのコードはどこから入手できますか?
私の関心は純粋に学術的であり生産的なものではなく、Rich Hickeyが鶏肉/卵の問題を処理する方法を見たいと思います。
リッチはもともとDotLispという言語に取り組んでいましたが、彼は元のコードの基礎として使用していたJSchemeの研究を始め、結局完全に置き換えました。
DotLispはここにある:http://dotlisp.sourceforge.net/dotlisp.htm
JSchemeはここにある:http://jscheme.sourceforge.net/jscheme/main.html
(トリビア:。JSchemeの著者の一人は、ブランダイス教授ティム・ヒッキー、リッチに知られていない関係である)
のClojureコンパイラはclojureではなくjavaで書かれています。現在のバージョンはあなたの好奇心を満たすものです。もちろん、マクロはコンパイラの一部であり、実際にはクロージャーで書かれていますが、コンパイラをJavaで実装することで解決される鶏卵問題には関係ありません。
「Clojure in Clojure」を永遠に見ることに継続的に関心があります。いつかおそらく:) –
コンパイラのブートストラップは、コンパイルするときと同じ言語でコンパイラを書き込むときによくある問題です。
しかし、Clojureの場合は、コンパイラis written in Javaだから、トリッキーなゲームは必要ありません。
歴史的な参考文献として、Haskellコンパイラ(Haskellで書かれたもの)GHCはもともとLazy MLでコンパイルされていました。
これはgithubへの最初のコミットの1つです...あなたはそこから前進することができます。 https://github.com/clojure/clojure/tree/894a0c81075b8f4b64b7f890ab0c8522a7a9986a – Kyle
私は最近、ClojureのコアにJavaコードがたくさんあるように聞いたことがあります。私はまだソースを手に入れていませんが、そのコアがREPL /ベース操作を取得するのに十分で、その上にあるすべての拡張機能がClojureのブートストラップであれば、全く驚くことはありません。たぶん、Clojureコンパイラを完全に作ってデータを消失した場合の歴史的な依存関係をもたらすので、あまり効果がないでしょう。 –
@BrianKnoblauchあなたはソースをつかんで見てください。 Clojureで使用する多くのものはJavaクラスです。例えばキーワード、原子。 Javaを使い慣れている人は、ソースを見て、これらのことが何をするのかを理解するのが簡単です。 – Bill