@giuliolunati requested a counting-down version of REPEAT, originally suggesting REPEAT/BACK. I said that didn’t seem particularly clear to me, and suggested COUNT-DOWN instead:
>> count-down i 3 [print i] 3 2 1
I might have suggested calling it COUNTDOWN un-hyphenated…except it seems it would go nicely with an upward counting version…and COUNTUP doesn’t look right… it needs the hyphen:
>> count-up i 3 [print i] 1 2 3
This touches upon an old gripe of mine, which is that I felt like there was nothing about the name REPEAT which suggested it would be modifying a variable. The idea that LOOP would be arity 2, and REPEAT would be arity 3, made no intuitive sense to me–I thought if anything, REPEAT should be the one that did things N times with no parameterization:
>> repeat 3 [print "no parameter, just repeat"] no parameter, just repeat no parameter, just repeat no parameter, just repeat
Years ago I’d made that suggestion because I wanted to repurpose the word LOOP. The concept was that LOOP could become to iteration what PARSE is to parsing. It was pointed out to me by @JacobGood1 that LOOP is what LISP uses for their “looping dialect”.
It seems to me that with COUNT-UP and COUNT-DOWN, we have a pretty strong justification for why it has a parameter to update as it counts. Because if it didn’t have a parameter, there’d be no difference between counting up and counting down.
Hyphenation is always kind of a bummer, but for what it’s worth there were only 4 or 5 instances of REPEAT in the Ren-C codebase…between Mezzanines and make scripts and everything else. It may not be the biggest deal in the world. I think retaking the shortest word LOOP for higher purposes is pretty important by comparison.