Единственное преимущество, которое я могу видеть, это то, что он позволяет избежать звонков на partial
.Почему clojure thread last (- >>) макрос?
(defn foldl [f acc xs]
(loop [acc acc
xs xs]
(if (empty? xs)
acc
(recur (f (first xs) acc) (rest xs)))))
(defn $ [f x] (f x))
(defn thread-last [x & rest]
(foldl $ x rest))
, который дает:
(thread-last (range 10)
(partial map inc)
(partial filter odd?)
(partial reduce +)) => 25
(->> (range 10)
(map inc)
(filter odd?)
(reduce +)) => 25
Есть ли случаи, когда функционал/Явная версия потерпит неудачу?
Запрашиваете ли вы случаи, когда в начале каждой формы вставлять 'partial' не будет, или вы запрашиваете * полезные * такие случаи? –
первый, так как в каких случаях нельзя было использовать частичный (или лямбда для размещения аргументов). – beoliver