会社でちょっとした Rust meetup があり、俺も何か新しいのをやりたいぞ!という気持ちになって Clojure 始めてみた。
理由
なぜこの流れで Rust でないのか??
- これまで Java, Python, Ruby, JavaScript をメインにやってきている
- 違うパラダイムの言語をやりたくなった
- 特に関数型プログラミング言語
- 特に LISP 系言語
- 過去の Java (JVM) 経験も活きてよい
- 仕事で使う予定はないが ClojureScript とかで web 絡みの何かも書けたら面白そう
- 会社の隣の席に経験者がいる
Exercism
上記 meetup で Exercism という、課題を解きながらプログラミング言語を学べるサイトを知ったのでこれでとりあえず Hello world している。
感想
こんにちはした感想と学び
Clojure用のビルドツール兼パッケージ管理ツール Leiningen が物凄く便利
- REPL もあって LL 的に学べる
- JVM系言語の Hello World までの遠さがない
brew install leiningen
で環境構築できるのでつまづかない
Leiningen の使い方
lein new
: Clojure project を新たに生成lein test
: テスト実行lein repl
: REPL 起動lein deps
: ライブラリダウンロード。project.clj
ファイルの:dependencies
に依存するライブラリを書いておく
オプション引数の与え方
Java のオーバーロード的な感じでもあるが、よりスマートに書ける。ところで Java はいつオプション引数がサポートされるんですかね(まさか知らないだけで、もうされている…?)
(defn hello ([] (hello "World")) ([arg] (str "Hello, " arg "!")))
括弧が多い
括弧が多いです。とはいえ ()
, []
, {}
が使い分けられているようなので、他の LISP 系言語よりマシらしい。
というわけでやっていきます。