WHILE Loop Condition Conservatism Examined

In the CONDITION slot, WHILE only accepts BLOCK! and FRAME! (e.g. a function to call).

There was a comment in the source that said:

// It was considered if `while okay [...]` should infinite loop, and then
// `while null [...]` never ran.  However, that could lead to accidents
// like `while x > 10 [...]` instead of `while [x > 10] [...]`.  It is
// safer to require a BLOCK! vs. falling back on such behaviors.
//
// (It's now easy for people to make their own weird polymorphic loops.)

I almost just deleted the comment outright--thinking well, that's obvious. And I do think that the in-the-box WHILE should avoid things like LOGIC!.

But it's not 100% obvious that WHILE should only take BLOCK!s and FRAME!s.

What about variables?

while $x [
    if ... [
        x: ... 
    ] ...
 ]

It's lighter to write, cheaper to represent than [x] with better locality, and could be faster.

I guess I'm not heavily opposed to expanding what it takes, as long as it's just a type signature issue and not something that makes the WHILE code more complex. (e.g. it can dispatch to the generic branch evaluation code... which handles things like QUOTED! values, but we just wouldn't let WHILE take quoted values and other things that don't make sense).

Anyway--I'll leave it on the table as a post here, vs. a comment in the source. Too many comments, sometimes!