Consider the case where we have a list of numbers [2 5 4 1 3 6]. We wish to drop the first two, take the next five, increase each one and then add them all together. Recall that the way to apply a function to a list of elements, such as to add up a list of numbers, is to user reduce:-
user=> (reduce + [2 5 4 1 3 6])
21
So the whole task looks like this:-
user=> (reduce + (map inc (take 3 (drop 2 [2 5 4 1 3 6]))))
11
The macro ->> lets us rewrite this so that the function calls are one after another instead of one inside another. So this same calculation can be written:-
user=> (->> [2 5 4 1 3 6] (drop 2) (take 3) (map inc) (reduce +))
11
No comments:
Post a Comment