In the following example:
the loop-local starts as an int when just a local but is widened to a long in the recur. It should be possible to retain the primitive int (or alternately float) type on the recur, rather than widening to long (or double).
The compiler code that is promoting the int seems to be:
Proposed: remove useless widening on loop bindings
Screened by: Alex Miller. My main open question here is: do we want to support primitive int/float loop vars?
Possibly older Clojure versions (but not verified).