In this case the for gives you the destructuring, plus the ability to do
filtering (:when) and mapping (yeilding the value of i) in one expression.
So you have one destructured binding that you can use for both purposes.
If you want to use filter, I think it is probably more idiomatic to follow
at operate on
the data, rather than sharing state are more noisy. For example,
these seem fairly equivalent to me:
p/age(caleb)
p/favorite-color(caleb)
or
caleb.getAge()
caleb.getFavoriteColor()
This assumes that you have defined 'age' and 'favorite-color' in a
namespace that