Common Lisp LOOP and ITERATE

LOOP is about the shortest word you can get in the looping world (FOR is one letter shorter, I guess).

So in a language that claims itself to be all-about-dialects, it doesn't seem to make sense to make LOOP the dumbest iteration construct in the box.

In Ren-C REPEAT is arity-2, where the first parameter is a number of times the block as the second parameter should be invoked. This is what historical Redbol called LOOP.

So with that out of the way... we can think about LOOP as being something more on the scale of PARSE (UPARSE!) in which you can richly express your iteration intent.

An obvious place to look for inspiration for such a dialect is Common Lisp's LOOP. (There's also a kind of "LOOP-lite" called ITERATE)

I've skimmed these things but never actually used them.

Clearly we have an advantage in expressivity due to having more parts in the box. But also, since we are oriented toward the visceral/extensible experience without much regard to performance, that could present some opportunities in clarity that they would not take.

Having built prototypes of SWITCH2 and DESTRUCTURE on top of UPARSE, I think it's past time to start prototyping what our take on LOOP might look like.

Anyone want to take a stab at designing it? I'd write it if there were a good examples of what it should look like.