2011-01-01から1年間の記事一覧

重箱の隅的Clojureのイケてないところ

この記事はClojure Advent Calendar 2011 4日目の記事です。 Clojureには,シーケンスや組み込みのイミュータブルなコレクション型,STMなどエレガントだといわれる様々な特徴がある。一方で,ときにプログラマを悩ませるような厄介な挙動や不自由さを感じる…

Shibuya.lisp TT #7でLT発表してきました

遅ればせながら,10/22(土)に行われたShibuya.lispの第7回テクニカルトークに参加した報告。いつの間にか1週間も過ぎていましたね(^^; Shibuya.lispテクニカル・トーク#7 : ATND Shibuya.lispのテクニカルトークももう7回目ということですが,東京が遠いのと…

Clojure 内部で使われる中間形式 Expr について分かったこと

最近,暇を見つけてClojureのコンパイラを読んでいる。まだよく分かっていない部分もたくさんあるけれど,今まで読んできた中で分かったこと,特にClojureの内部で使われている "Expr" という中間形式についてまとめておく。 Expr って何? Clojureの内部で…

Nailgun/GroovyServを使ってClojureの起動を高速化する

JVM上で動作する言語(処理系)にはよくある話だけれど,Clojureの起動は遅い。下の結果は手元の環境で実行した場合の例。 $ repeat 5 time java clojure.main -e '(println "Hello, Clojure!")' Hello, Clojure! java clojure.main -e '(println "Hello, Cloj…

「ClojureでJavaクラスのコンストラクタをapplyする」をリフレクションで

元ネタは1年前の記事。 ClojureでJavaクラスのコンストラクタをapplyする - 水底で思うこと 解決方法 -> ClojureでJavaクラスのコンストラクタをapplyする - 地獄の猫日記 ClojureからJavaのコンストラクタを呼ぶ場合, (new Hoge foo bar) または (Hoge.…

ぷよぷよ19連鎖の問題を Clojure で

去年、迷路を最短経路で解く問題を出題していたところが、今年も採用一次試験の問題を公開しているというのでClojureで解いてみた。 問題は以下のとおり。 ゲーム「ぷよぷよ」で、フィールドの状態がテキストで与えられたとき、消える「ぷよ」を消して次のフ…

Rubyで末尾再帰最適化をする。

元ネタはPythonで末尾再帰最適化をする。 - wasabizの日記。Pythonのデコレータを使って、末尾再帰で書かれた関数に対して末尾呼び出し最適化(TCO)を行う、というものです(どうやってTCOを実現しているかの詳細についての説明はここでは割愛します)。さて、…