I'm curious why you consider the "counting loop" to be a fundamentally different kind of loop, instead of listing it among the optimised iterative loops. Is there any difference as far as observable behavior, or is it just that it's implemented differently, or is there really no difference but that's how you conceive of it?