Is there an idiom for "do this N times"?

Is it an API-level contract? In other words, is there no plan for hoisting out f.(vector) in g.(f.(vector), matrix) in the broadcasting infrastructure, other than improving LICM in the compiler? I don’t know if changing broadcasting infrastructure is easier than improving the compiler. I’m just curious.

Also, in case this part of the API hasn’t consolidated yet, I wonder if it makes sense to keep the exact number of evaluation unspecified. For example, this lets you hoist out f.(vector) even if it cannot be done safely by the compiler (e.g., it uses memoization).