Rebol3 Code Examplex
Loops/Wrong ranges
Handle or demonstrate incorrect range boundaries in loops.
Rebol [
title: "Rosetta code: Loops/Wrong ranges"
file: %Loops-Wrong_ranges.r3
url: https://rosettacode.org/wiki/Loops/Wrong_ranges
needs: 3.0.0
]
make-range: function [start end step][
res: copy []
if zero? step [return none]
for i start end step [
append res i
]
]
foreach [start end step] [
-2 2 1 ;Normal
-2 2 0 ;Zero increment
-2 2 -1 ;Increments away from stop value
-2 2 10 ;First increment is beyond stop value
2 -2 1 ;Start more than stop: positive increment
2 2 1 ;Start equal stop: positive increment
2 2 -1 ;Start equal stop: negative increment
2 2 0 ;Start equal stop: zero increment
0 0 0 ;Start equal stop equal zero: zero incremen
][
;; Using format to pad numbers
prin format ["make-range" -3 -3 -3] reduce [start end step]
prin " ;== "
;; Output 'make-range' function result
probe make-range start end step
]