Clojureを勉強している3

今日は第2章第2節から第2章の最後までやりました。いや〜面白かった。綺麗だね。

  • Functions Creating Functions and Other Neat Expressions
    • partialがカリー化か。
    • compすごい。
  • Destructuring
    • 最近の言語は付けるようになってるね。良い
    • mapのdestructuringのキーとバリューの位置がちょっと混乱した。let関数への引数だから妥当か。
    • :asいるよね。
    • destructuringでデフォルト値(:or)書けるのは珍しくない? すごい
    • :keysは頻出すると。
    • 関数定義の引数でも使えると。無名関数もかな?
  • The Power of Laziness
    • rangeは引数付けないだけで自然数の無限リスト得られるのか!へぇ〜
    • (class (range 5))(class (range))で見ると型が違うのな。前者がclojure.lang.LongRange、後者がclojure.lang.Iterate
    • repeatももちろんlazyだとさ。
    • rand-int便利。
    • (repeat 5 (rand-int 10))したら妥当だけどちょっと笑った。
      • 正解は(repeatedly 5 #(rand-int 10))(take 5 (repeatedly #(rand-int 10)))でも良し。
      • repeatedlyさんのrepeatedlyはこれかな?
    • restは無限リストに使えるとのこと。そうだね
  • Recursion
    • 普通の再帰関数の書き方。
    • loop/recurでも書ける。例では引数の1つを隠蔽できるのでこっちが良いとしてる。
    • あー、暗黙の末尾再帰最適化とかじゃなく明示的にrecur使う設計になってるのね。こっちの方が勘違いがなくていい気がする。
  • The Functional Shape of Data Transformations

    • mapの解説。
    • doallで即時実行できるのか
    • reduce、初期値accなくても実行できるんか。doc見たら最初の2つで実行した結果から始めるみたい。すげえ
    • filter/removeか。rejectとかではないんだな。
    • for出た。letとか:inとか:ofとかいらんのね。
      • コレクション複数取ると全組み合わせ出すのか。やべえな
      • おっと:let出てきた。面白いな。
    • flattenRubyと同じ。
    • vecとかsorted-mapとか型を変える関数あるけどintoが何でも対応できて便利だな。
    • partitionは余りは捨てて、拾いたいときはpartition-allか。引数じゃなくて名前が違うんだな
      • partition-byも出てきた。こっちは分ける関数を第1引数に取るのか。
  • Chapter 2 Flow and Functional Transformations

    • Functions Creating Functions and Other Neat Expressions
    • Destructuring
    • The Power of Laziness
    • Recursion
    • The Functional Shape of Data Transformations

Living Clojure

Living Clojure