Arantium Maestum

プログラミング、囲碁、読書の話題

勉強したいもの

Clojureを書き散らかしてきて、何となく文法や好きな書き方、どんなエコシステムになっているのかなどがわかってきた。

しかし、汎用性のあるライブラリを含めて、まだClojureの基本的なところさえ使いきれていない。

忘備録的な意味合いも含めて、近いうちに手を出していきたい言語上のコンセプトやライブラリを列挙していきたい。

まず言語上のコンセプト:

ここら辺はClojureの基本も基本、といったところだが未だに使ったことがほとんどない。

というかref系は全くない。ここまでずっとimmutabilityだけでやってきて、一本道のコードならまあ全体的になんとかなる感触だが、いわゆるEmbarassingly parallelな問題以外で並列処理などをしていこうと思ったらClojureのSTMメカニズムを使う必要が出てくる。

Polymorphism用の機構、Lispの強みであるマクロやJVM言語の利点のJava Interopもバシバシ使っていきたい。

  • transducer
  • transients
  • type hint

ここら辺は最初の4つより特殊な概念で、使わなくてもいいけど知っておくと処理速度やコードの再利用性が格段に上がるケースがありそう。

ライブラリとしては:

  • core.match
  • core.async
  • schema
  • specter

Specterだけまだちょっとメインストリーム化していない印象だが、複雑なデータ構造の中をいろいろと変更したい時にすごく便利そうなので使いこなしてみたい。

あと今はまだちょっとフォーカスからは遠いが、近いうちにClojureのウェブ系スタックも試してみる。主に:

  • ring
  • compojure
  • reagent
  • hiccup
  • figwheel

あたりか。Hoplonとかもすごく面白そうだが・・・

これらを逐次試しつつ、本来の本命であるSICPにそろそろ挑んでいこうと思う。