CLOVER🍀

That was when it all began.

Clojure 1.3.0インストール

久々に、Clojureを触ってみたくなりまして。1.1、1.2の頃は触っていたのですが、このところ全然だったので、Clojure 1.3.0をインストールすることにしました。

とりあえずスクリプト的に使うことをメインにするので、Leiningenはいったん置いておきます。

まずは、Clojureのダウンロードページ
http://clojure.org/downloads
よりclojure-1.3.0.zipをダウンロード。

これを適当なところに展開します。自分は、/usr/localの下に入れることにしているので

$ cd /usr/local/
$ sudo mkdir clojure
$ cd clojure/
$ sudo cp [clojure-1.3.0.zipのダウンロード場所] ./.
$ sudo unzip clojure-1.3.0.zip
$ sudo ln -s clojure-1.3.0/clojure-1.3.0.jar clojure.jar

Clojureの本体はclojure-X.Y.Z.jarなので、今後のバージョン変更に備えてシンボリックリンクにすることにしました。

メインクラスの起動方法を書いてある以下のページによると、clojure-X.Y.Z.jarにクラスパスを通してclojure.mainを指定すればよいそうです。
[The REPL and main entry points]
http://clojure.org/repl_and_main

というわけで、簡単な起動スクリプトを作ります。

$ cat clj 
#!/bin/bash

declare -a ARGS

APPEND_CLASSPATH=
while [ "$1" != "" ];
do
  if [ "$1" == "-cp" ]; then
    shift
    APPEND_CLASSPATH="$1"
  else
    ARGS=("${ARGS[@]}" "$1")
  fi

  shift
done

${JAVA_HOME}/bin/java -cp `dirname $0`/clojure.jar:"${APPEND_CLASSPATH}" clojure.main ${ARGS[*]}

(4/21 更新)

権限変更。

$ sudo chmod a+x clj

あと、unzipしてできたファイルやディレクトリの権限もちょっと微妙だったので、find xargs chmodで補正しておきました。

$ sudo find clojure-1.3.0 -type f | xargs sudo chmod 644
$ sudo find clojure-1.3.0 -type d | xargs sudo chmod 755

つまり、こんな感じ?

$ ll
合計 16
drwxr-xr-x  3 root root 4096 2012-04-15 17:43 ./
drwxr-xr-x 19 root root 4096 2012-04-15 17:23 ../
-rwxr-xr-x  1 root root   79 2012-04-15 17:36 clj*
drwxr-xr-x  5 root root 4096 2011-09-23 13:49 clojure-1.3.0/
lrwxrwxrwx  1 root root   31 2012-04-15 17:29 clojure.jar -> clojure-1.3.0/clojure-1.3.0.jar

あとは、作った/usr/local/clojureにパスを通して終了。.bashrcにでも。

export CLOJURE_HOME=/usr/local/clojure
PATH=${CLOJURE_HOME}:${PATH}

REPLを起動。

$ clj
Clojure 1.3.0
user=> 

テストスクリプトを作って、起動。

$ cat hello.clj 
(println "Hello Clojure!!")
$ clj hello.clj 
Hello Clojure!!

うまくいってそうですね。

あと、Clojure 1.3.0ではContribがどっかに行っちゃったみたいです。
案内は、こちら。
http://dev.clojure.org/display/design/Where+Did+Clojure.Contrib+Go

パッと見た感じ、Leiningenとかを使って依存関係の解決を使って引っ張ってきてねってスタンスみたいですね。前のJARをダウンロードしてとりあえずクラスパスを通す方が、スタートアップとしてはお手軽だったような…。

ライブラリとして整理される過程でこうなっちゃったのかなぁ?

あとは、Emacsclojure-modeを追加。
こちらから、clojure-mode.elをダウンロードしてきて…
https://github.com/jochu/clojure-mode
.emacsに、以下を追加。

;; clojure-mode
(require 'clojure-mode)
(autoload 'clojure-mode "clojure-mode" "Clojure editing mode." t)
(add-to-list 'auto-mode-alist '("\.clj$" . clojure-mode))

さてさて、Clojureの書籍といえば日本ではこの本のみですが、

プログラミングClojure

プログラミングClojure

Clojure 1.0の頃のものですし、これ以降出版される気配が全くありません…。とはいえ、Lispの経験がないのでこれでもけっこう苦戦しているので、しばらくはこれを片手にもう1度頑張ってみようかと思います。