clojure
先週のShibuya.lisp TT#4への参加をきっかけ*1に読み始めた『Programming Clojure』を一通り読み終えた。
今までは、JVM上の言語ということで何となく敬遠していたが、結構いろいろ面白そうな特徴があった。
とりあえず個人に良さそうだと思った点は以下の通り。※ あくまでも自分の印象なので間違っている可能性あり
- Java関連
- データ構造関連
- リストや配列、マップ、その他のaggregateなデータ構造全てをsequenceとして抽象化して扱える
- common lispに当てはめれば、list型以外に対してもcons/car/cdr/mapcarなどの関数が使えるようなもの
- データは基本的にimmutable/persistent
- sequenceは基本的にlazyで、必要な時にのみ、その要素が計算/取得される
- リストや配列、マップ、その他のaggregateなデータ構造全てをsequenceとして抽象化して扱える
- スレッド関連
- スレッドモデルとして(?)STMを採用
- 速度
- その他
- common lispよりもユーザが使いやすいように(良くも悪くも)お膳立てが出来ている感じ
まだ一冊本を読んだだけなので、実際にどれくらい使えるかは分からないが、とりあえずcommon lisp(sbcl)との住み分けはできそう。
言語的にはcommon lispの方が好みなような気もするけど*4、実用的な場面で使うのならば、clojureの方が安定・安全そうで良いかもしれない。
いずれにせよ、しばらく試してみて様子をみよう。