Hi Ryan,
Could you show me some code where you've had trouble? I'm not aware of any
documentation other than the User's Guide and what you get by using HELP.
I've found that most of my problems with the loop functions are solved by
realizing that they are just functions that take arguments, and that you have
to pay close attention to how the arguments you feed them are going to look.
>> ? while
While a condition block is TRUE, evaluates another block.
Arguments:
cond-block -- (block)
body-block -- (block)
WHILE takes two block arguments. The first one is repeatedly evaluated, and
as long as that evaluation returns a true value, the second one is also
evaluated.
>> ? for
Repeats a block over a range of values.
Arguments:
word -- Variable to hold current value (word)
start -- Starting value (number series money time date char)
end -- Ending value (number series money time date char)
bump -- Amount to skip each time (number money time char)
body -- Block to evaluate (block)
FOR takes five arguments! I'm always getting the number wrong, and the error
messages are always confusing. Basically what you want is a word, three
numbers, then the block to be evaluated.
And so on ... Now why would your FOR statement ignore part of your block?
Perhaps there's an if statement that's not right. Perhaps you have a block
within your FOR block that you expect to be evaluated, but it's just sitting
there because it's not the argument of an IF or a LOOP or a TRY or a DO or a
... Perhaps you're trying to use a word argument of FOR or FOREACH after
you've exited from the FOR or FOREACH block.
>> for x 0 4 1 [print x]
0
1
2
3
4
>> print x
** Script Error: x has no value.
** Where: print x
X here is strictly local to the FOR block. It looses its value once you leave
that block. In such a case you should do:
>> x: 0 while [x <= 4][print x x: x + 1]
0
1
2
3
4
== false
>> print x
5
Finally, since REBOL code uses no delimiters for their own sake, if get the
number of arguments to one function wrong, the error may show up some place
where you'd never expect. You've got to keep looking at the help for the
functions you use, and keep your code formatted to make it as transparent as
possible how everything should evaluate out.
Good luck!
Eric