ClojureのREPLでWebObjects的なモノを利用する。

 タイトルの時点で誰得ですね。わかってますよそんなこと。

 ClojureのREPLだからって何も特別な事はなくって、Javaの流儀にしたがって使いたいライブラリへパスを通してあげて起動すればいいわけですが、私と同じようにMacPortsかHomebrew(インストール後少し作業が必要)でインストールしていれば、もう少し簡単に使う事ができます。カレントディレクトリ内に.clojureというファイルがあれば内容をパスへ追加してくれるというあれを利用するわけですね。
 そんなわけで、良い子のMacにはWebObjectsがインストールされているはずなので、.clojureファイルへガツガツと追加して行きますよ。


bash-3.2$ more .clojure
classes:/System/Library/Frameworks/JavaFoundation.framework/Resources/Java/javafoundation.jar:/System/Library/Frameworks/JavaWebObjects.framework/Resources/Java/javawebobjects.jar:/System/Library/Frameworks/JavaEOAccess.framework/Resources/Java/javaeoaccess.jar:/System/Library/Frameworks/JavaEOControl.framework/Resources/Java/javaeocontrol.jar

 その結果こうなりました。最初のclassesは、ClojureでJavaのクラスを生成するとデフォルトで保存される場所です、今回は関係ありませんけど。

 こんな内容の.clojureファイルが存在するところでcljコマンドを用いてREPLを呼び出して上げれば、


bash-3.2$ clj
Clojure 1.2.0
user=> (import com.webobjects.foundation.NSRange)
com.webobjects.foundation.NSRange
user=> (NSRange.)
#<NSRange {0, 0}>
user=> (def aRange (NSRange. 1 1))
#'user/aRange
user=> aRange
#<NSRange {1, 1}>
user=> (.length aRange)
1
user=> 

 こんな事が展開されたり致しますよ。本当に誰得です、誰が使うんだこんなの。ボクが使います。多分きっとそのうちまた再開するんだから。うんざりするほど自信がないけど……。