0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ClojureのerlangバインディングであるClojerlを動かす

Last updated at Posted at 2022-12-24

Clojerlとは

ClojerlはClojureのerlangのバインディングです。
https://www.clojerl.org/
Erlangは安全で信頼性の高い、スケーラブルなシステムを構築するの言に適している言語です。そしてClojureと同様にイミュータブルで永続的なデータ構造を提供し、並行処理の機能を持ちます。
一方、Clojureが提供するものはLispそのものです。repl、これはプログラマーに対して魅力的な世界を提供します。そしてErlangと同様にイミュータブルで並行処理の機能を提供します。

インストール

私の環境はM1 Macですので、brewでerlangを含むelixirをインストールします。

brew update
brew install elixir

でもこれだけでは足りません。ビルドツールであるrebar3が必要です。

git clone https://github.com/erlang/rebar3.git
cd rebar3/
./bootstrap 

同じディレクトリにrebar3ができるので、これをパスが通るディレクトリに置きます。
次にclojerlをインストールします。

git clone https://github.com/jfacorro/clojerl
cd clojerl
make

clojerlの動かし方

動かし方は簡単です。

% make repl
===> Verifying dependencies...
===> Analyzing applications...
===> Compiling clojerl
===> Clojerl Compiling clojerl
===> Clojerl Compiling spec_alpha
===> Clojerl Compiling test_check
===> Clojerl Compiling core_specs_alpha
Clojure 0.9.0-2174.5b412b8

早速動かしてみる。

clje.user=>             (+ 1 1)
2
clje.user=>             (defn add [x y](+ x y))
#'clje.user/add
clje.user=>             (add 1 2)
3
clje.user=> (let [x 3 y 2]
  (println "x = " x ", y = " y)
  (* x y)
  )
x =  3 , y =  2
6
(let [n 1000000 iter 100
      l (into () (repeat n "a"))
      v (into [] (repeat n "a"))
      ]
  (time (dotimes [_ iter](nth l (dec n) )))
  (time (dotimes [_ iter](nth v (dec n) )))
  )
"Elapsed time: 1680.684589 msecs"
"Elapsed time: 0.120343 msecs"

pureなClojureでは。。。

(let [n 1000000 iter 100
      l (into () (repeat n "a"))
      v (into [] (repeat n "a"))
      ]
  (time (dotimes [_ iter](nth l (dec n) )))
  (time (dotimes [_ iter](nth v (dec n) )))
  )
"Elapsed time: 351.272542 msecs"
"Elapsed time: 0.128791 msecs"

ちょっと遅いかも知れません。

おわりに

それなりに使えるようですが、まだまだ未実装のものも多いようで今後に期待します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?