Kick Start Clojure
今日はShibuya.lispでClojure尽くしを味わってきたわけで
感動のあまりこんなものまで買ってきてしまった.
- 作者: Stuart Halloway,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2010/01/26
- メディア: 単行本(ソフトカバー)
- 購入: 10人 クリック: 338回
- この商品を含むブログ (72件) を見る
というわけで,Closureをはじめてみる.
インストール
Unix系環境で,java6がインストールされている事を確認.
つぎに本家よりパッケージをダウンロードし
解凍して出来たフォルダごと'/usr/lcoal'あたりに移動する.
$ sudo mv closure-1.1.0 /usr/local/closure/
つぎにここを参照する実行ファイルを作っておく./usr/local/binに'clojure'をつくる.
#!/bin/sh java -cp /usr/local/clojure/clojure-1.1.0/clojure.jar clojure.main $@
で実行パーミッションを与えておく.
これで
$ clojure
user=>
という具合にREPLが起動する.
そしたら,恒例Emacs用のモードのインストール
こちらでclosure-modeを作ってらっしゃるので
インストールする.
ゆるくベンチ
せっかくなので,ベンチマークとってみる.
比較として,Scheme(Gauche)と対決してみる.
(処理系の実装方式の違い,テストコードが思いつきな点,全てがいい加減なので参考程度にしてください)
以下のコードを走らせる.
fib.clj (Clojure用)
(defn fib [n] (loop [i 0 x 0 y 1] (if (= i n) x (recur (+ i 1) y (+ x y))))) (fib 100000)
fib.scm (Scheme用)
(define (fib n) (let loop ((i 0) (x 0) (y 1)) (if (= i n) x (loop (+ i 1) y (+ x y))))) (fib 100000)
結果
$ time clojure fib.clj
real 0m1.514s
user 0m1.693s
sys 0m0.118s
$ time gosh fib.scmreal 0m0.948s
user 0m0.898s
sys 0m0.030s
なるほど,gaucheの方が早い訳ですね...
うーん,そもそも今回示したコードでは魅力が伝わりません.
次回はなんか面白い事を書こうと思います.続く...