Projections
Looking at their last parameter, projections are always functions of the following form:
A -> B
With A
being an object-like or array-like structure and B
being an arbitrary type. The conclusion of this signature is, that projections cannot be easily composed on data structures, since they reduce their values to a different type.
Projections are needed for any kind of conclusion you want to draw from an object structure (like counting the values inside or simply retrieving them).