From Java to Scheme
最近カヤック星人が流行っているとかいないとか。あっちはJavaでやってた仕事をRubyでやりましょ、みたいな話(だと思う。読んでないからしらない)。
こっちは、Javaで書けるものってSchemeでも書けるよね。その証拠に、それJavaからSchemeに変換できるよ、みたいな話。今Gaucheで書いているオブジェクトシステムの振舞いをJavaコンパチブルにすると、実はJavaをSchemeに自動翻訳ってそんなに難しくないのかもしれない、と考えていた。
しかし、難しいと面倒くさいは違うのだ。
public class Hello { public void say(){ System.out.println("Hello, world."); } } Hello hello = new Hello(); hello.say();
コンパイラ通してないから動かないかも。Javaなんてもう忘れた。で、今書いているオブジェクトシステムで↑のを書き直すとこんな感じ。
(class Hello (public say () (J System -> out -> println "Hello, world"))) (let ((hello (create Hello))) (J hello -> say))
staticとかクラスのスコープとか継承とかまだ全然考えてないけど、大体こんな感じのコードを書けば動くようになってる。
それSchemeで!