そうですね、LightTableは開発段階のREPLとしては優れていますが、完了したら、実行するClojureScriptをコンパイルする必要があります(つまり、node.jsを使用します)。
LightTableのセットアップ
- cljs拡張子を持つclojurescriptファイルを開きます。
- コントロールスペースをクリックします
- 接続の選択:接続の追加、およびLightTableの選択
次に、ClojureScript式を指定し、command-enterまたはshift-command-enterキー(Mac OS Xの場合)を使用して評価できます。
node.jsのセットアップ
最も簡単な方法はラインを使用することですが、ラインを使用したくない場合は、これが可能な方法の1つです。
ステップ1:cljs.jarコンパイラをダウンロードする
または、可能な場合は新しいバージョンをダウンロードします。
ステップ2:ソースディレクトリを作成し、ファイルを作成します
└── src
├── build.clj
└── smcho
└── core.cljs
build.cljは次のとおりです。必要に応じて、名前空間を変更し、それに応じてディレクトリ名を変更できます。
(require 'cljs.build.api)
(cljs.build.api/build "src"
{:main 'smcho.core
:output-to "main.js"
:target :nodejs})
これはClojureScriptコードです。mainメソッドが追加されます。
(ns smcho.core
(:require [cljs.nodejs :as nodejs]))
(nodejs/enable-util-print!)
(defn factorial [x]
(reduce * (range 1 (inc x))))
(defn fib [n]
(if (<= n 1)
1
(+ (fib (- n 1)) (fib (- n 2)))))
(defn sort-seq []
(sort (repeat 100 (rand-int 2000))))
(defn time-fun [fun]
(let [start (.getTime (js/Date.))
_ (fun)
end (.getTime (js/Date.))
result (- end start)]
result))
(defn time-it [fun]
(let [values (for [i (range 200)] (time-fun fun))]
(/ (apply + values)
(count values))))
(defn -main []
(println "(factorial 5000) \t Avg: " (time-it #(factorial 5000)))
(println "(fib 20) \t Avg: " (time-it #(fib 20)))
(println "(sort-seq) \t Avg: " (time-it #(sort-seq))))
(set! *main-cli-fn* -main)
ステップ3:main.jsスクリプトを取得するためにビルドします。
java -cp cljs.jar:src clojure.main src/build.clj
ステップ4:node.jsを実行します
node main.js
実行結果が表示されます。
(factorial 5000) Avg: 0.65
(fib 20) Avg: 0.135
(sort-seq) Avg: 0.135
サンプルコードはhttp://blog.gonzih.me/blog/2013/01/23/clojurescript-on-beaglebone-simple-benchmark-with-node-dot-js/からコピーされています。