(loop [result [] x 5]
(if (zero? x)
result
(recur (conj result x) (dec x))))
-> [5 4 3 2 1]
loopは別にループをさせるわけではなく、[]に変数の束縛を作って、その後のS式を評価するもので、letとほぼ同じ。ただ、loopは、recurを読んだときに、loopを指定された引数で実行して、再帰を実現するようです。
sassyの日々の記録
{"x" "a" "y" "b"}
{ :first-name "Saki" :family-name "Aibu"}
(def girl { :first-name "Saki" :family-name "Aibu"})
(girl :first-name)
みたいに。
(defn greet-author [{fname :first-name}]
(println "Hello, " fname ))
(greet-author {:first-name "Saki" :family-name "Aibu"})
とかくと、Hello,Sakiと表示されます。
(let [[x y] [1 2 3]]
[x y])
これは、[1 2]
になります。
(defn func [arg] body)
(cond (< x 10) "less"
(> x 10) "more")
みたいに