Loops
Quick overview: Loops
Loops are discouraged in most cases. Instead functional programming patterns like map, filter, or reduce can usually be used in their place.
For Loops
For loops use the for, in, and to keywords. For loops always increment or decrement a counter by one on each iteration. This increment cannot be changed, use while loops for more control over the increment.
let x = 1;
let y = 5;
for (i in x to y) {
print_int(i);
print_string(" ");
};
/* Prints: 1 2 3 4 5 */
The reverse direction is also possible using the downto keyword:
for (i in y downto x) {
print_int(i);
print_string(" ");
};
/* Prints: 5 4 3 2 1 */
While Loops
While loops allow executing code until a certain condition is met. It is not restricted to counting between two integers like for loops.
It is common to use refs with while loops.
let i = ref(1);
while (i^ <= 5) {
print_int(i^);
print_string(" ");
i := i^ + 2;
};
/* Prints: 1 3 5 */
Break
There is no break or early return behavior in Reason. In order to achieve something similar create a boolean ref:
let break = ref(false);
while (!break^ && condition) {
if (shouldBreak()) {
break := true;
} else {
/* normal code */
};
};