raven - manual - Loops
The word each ( int/str/list/hash -- ) loops over different data types, providing the next item on the stack each loop interation.
# Integer argument = counted loops. # Here $i will go from 0 to 9. 10 each as $i $i print "\n" print # String argument = per character code loops 'hello world' each as $c $c dup chr "the next character is %s (ascii: %d)\n" format print # List loops = item by item loop [ 1 2 3 4 5 ] each as $value $value print "\n" print # Hash loops = value by value loop { 'a' 1 'b' 2 'c' 3 } each as $value $value print "\n" print
The word pair ( -- index/key ) works with each to give access to loop indexes.
# String character indexes 'hello world' each pair as $i , $c $c chr $i "character %d is %s\n" format print # List numeric indexes [ 1 2 3 4 5 ] each pair as $index , $value $index "index is %d\n" format print $value "value is %d\n" format print # Hash string keys { 'a' 1 'b' 2 'c' 3 } each pair as $key , $value $key "key is %s\n" format print $value "value is %d\n" format print
Conditional loops use repeat ( - ) and while ( f - ) and until ( f - ).
repeat <condition> while do_something repeat <condition> until do_something_else
|