If you can, please read the most recent summary remarks on ANY vs. WHILE… and NOT END. I'm increasingly feeling certain that WHILE and SOME with no progress requirement are the right primitives. It's running up against my lack of love for the BREAK/ACCEPT/REJECT naming as those kinds of things would need to be invoked more often, but maybe that just needs to get cleaned up too.
Also consider that if ANY were retaken in PARSE it could potentially offer an alternative of a parallel use like:
any ([integer! decimal! block! text!])
[integer! | decimal! | block! | text!]
The GROUP! to get the BLOCK! as a synthesized product is necessary. If ANY took the BLOCK! as a rule it would not have the power to override the default interpretation as a sequence. I've written elsewhere about this.
I think that this "non-looping-feeling" which the language cultivates about ANY gets at the core of why the word never really sat right with me. It means "pick one thing out of a set of alternatives" everywhere else... ANY-VALUE!, any [even? x, x > 20]... not "loop".
Plus the "progress requirement" slipstreamed into the rule makes the curve from simple cases to harder ones more difficult...where you wind up having to learn WHILE anyway.
(Related thought: Maybe it is interesting to make a SOME loop in the non-PARSE world, which errors if it doesn't run the body at least once? Though having a few words that are common in parse rules but not in plain code can help cue differentiation of which is which, so that's another thing to consider.)