-> : thread-first macro
it puts the first argument as (always) the 1st parameter of later forms/functions. e.g.
(first (.split (.replace (.toUpperCase "a b c d") "A" "X") " "))
;; ⇒ "X"
;; Perhaps easier to read:
(-> "a b c d"
.toUpperCase
(.replace "A" "X")
(.split " ")
first)
;; ⇒ "X"
;; ⇒ "X"
;; Perhaps easier to read:
(-> "a b c d"
.toUpperCase
(.replace "A" "X")
(.split " ")
first)
;; ⇒ "X"
->> : thread-last macro
it puts the first argument as (always) the last parameter of later forms/functions. e.g.
user=> (reduce +
(take 10
(filter even?
(map #(* % %)
(range)))))
;; ⇒ 1140
(take 10
(filter even?
(map #(* % %)
(range)))))
;; ⇒ 1140
(->> (range)
(map #(* % %))
(filter even?)
(take 10)
(reduce +))
;; ⇒ 1140
No comments:
Post a Comment