abcl の導入から、外部jarファイルを使うまで。
導入からSLIMEで使えるようになるまで
MacOS 10.10.5 を使っているので、homebrewでインストールする。
brew install abcl
で 1.3.2 が入った。
続いて、SLIMEで使えるように .emacs に設定する。
(setq slime-lisp-implementations
'((sbcl ("sbcl")) ; "--core" "/Users/yappy/.sbcl.core-for-slime"
(ccl ("ccl64"))
(abcl ("abcl"))))
Emacsを起動しなおして、M-- M-x slime
で起動するとlisp処理系の候補が聞かれるので、
abclと入力して、Enter.
Common LispでJavaのクラスを使う
CL-USER> (defparameter *my-integer* (jnew "java.lang.Integer" 12))
CL-USER> (jcall "getBytes" (jcall "toString" *my-integer*))
#<jarray [B@727fe87 {1B3954B7}>
CL-USER> (jarray-length *)
2
こんな感じで使えるようだ。クラスパスに追加したいjarファイルがある場合には
(add-to-classpath "/path/to/some.jar")
とすれば読み込んでくれる。CLASSPATH=.... abcl
で起動すれば
いいらしいが、SLIMEの起動時引数に与えるのはなんだかカッコ悪い。
現状
(add-to-classpath (directory #P"./libs/*.jar"))
という形で追加している。
trunk/abcl/src/org/armedbear/lisp/java.lisp を読むといいかも。
selenium-webdriverでスクレイピングツール作ってみる
(…)
きっかけ
redditでArmed Bear Common Lispを知って、Clojureはうまく使いこなせなかったので、これでSeleniumを使ってみたい。
abclとは
Armed Bear Common LispはJVM上で動作するCommon Lispの実装で、Common LispをJavaのバイトコードにコンパイルする。
Development and deployment of Common Lisp applications on the JVM では、abclをどんな風に使ってるかなんとなくわかる。