Clojureを学ぶ 4clojure編 1

2020-06-06

以前、ちょっとだけかじった事があった Clojure を、もういっかい勉強中。

YouTubeで kazuki babaさんという人が、4clojure実況をやっているのを見て、やってみたくなりました。

以前やったことはあって、そのときはElementaryを終わらせて、Easyを30ぐらい解いたところで中断。でも、すっかり忘れているので、最初からやり直してみます。

今回やったのは、以下の1問目~15問目。

  • Nothing but the Truth
  • Simple Math
  • Intro to Strings
  • Intro to Lists
  • Lists: conj
  • Intro to Vectors
  • Vectors: conj
  • Intro to Sets
  • Sets: conj
  • Intro to Maps
  • Maps: conj
  • Intro to Sequences
  • Sequences: rest
  • Intro to Functions
  • Double Down
  • Hello World

メモ

覚えておきたい、知らなかった内容のメモ

conj

;listにconjすると、前に追加される。
(conj '(3 4) 2 1)
=> (1 2 3 4)

;vectorにconjすると、後ろに追加される
(conj [1 2 3] 4)
=> [1 2 3 4]

;mapにconjすると、後ろに追加される。 順序は関係ないのでは?
   (conj {:a 1} [:c 3] [:b 2])
=> {:a 1, :c 3, :b 2}

;mapに存在するキーをconjすると、上書きされる
(conj {:a 1} [:a 2] [ :b 2])
=> {:a 2, :b 2}

;setにconjすると? 順序は関係ないのでは?
(conj #{1 3} 4 2)
=> #{1 4 3 2}  
(conj #{1 3}  2)
=> #{1 3 2}
(conj #{1 3} 4 )
=> #{1 4 3}   

partial

部分適用?

   (defn add [a b] (+ a b))
=> #'user/add
   (def add1 (partial add 1))
=> #'user/add1
   (add1 2)
=> 3