Clojureを勉強している2

Living Clojure

Living Clojure

この本、読みやすい英語でオススメです。

今日は第2章第1節をやった。

  • true?, false?, nil?, not, =, not=, empty? 覚えた。
  • へー、trueのクラスはjava.lang.BooleanでJavaのそのまま使ってるのかー。ってJVMに通すんだから当たり前っちゃー当たり前か。
  • "nil is logically false"を3回唱えよとか出てきたw。
  • (= '(:drinkme :bottle) [:drinkme :bottle])trueになるのはカッコいいなぁ。
  • (class (seq [1 2 3]))clojure.lang.PersistentVector$ChunkedSeqが返るのはびっくりした。Seqクラス的なものがあると思ったら違うっぽい。
  • seqはコレクションが空でないときの判定に使われるという、言語特有のイディオム出てきた。
  • every?すげえな、コレクションの要素を全部判定してくれる。便利関数だ。
  • 末尾に?がついた関数はtrue/falseを返すのが慣習とのこと。Rubyといっしょだな。
  • not-any?、英語がスッと出ないので覚えにくい。
  • someが1つ目の引数にHashSet使うことがあるの、覚えられなさそう……
  • if, whenはともかくif-let, when-letの例が良くないと思う……letしたシンボル使ってない……
  • cond綺麗よな。しかし、:elseの代わりに"default"使えるようにしたのなんでだろう……
  • case=関数を適用してくれると、ふむ。あああ、デフォルト値の設定がなんか気に入らない。

以下、今日やった分の目次:

  • Chapter 2 Flow and Functional Transformations
    • Controlling the Flow with Logic