# Loops: for...to Expression

The for...to expression is used to iterate in a loop over a range of values of a loop variable.

## Syntax

for identifier = start [ to | downto ] finish do
body-expression


## Remarks

The type of the identifier is inferred from the type of the start and finish expressions. Types for these expressions must be 32-bit integers.

Although technically an expression, for...to is more like a traditional statement in an imperative programming language. The return type for the body-expression must be unit. The following examples show various uses of the for...to expression.

// A simple for...to loop.
let function1() =
for i = 1 to 10 do
printf "%d " i
printfn ""

// A for...to loop that counts in reverse.
let function2() =
for i = 10 downto 1 do
printf "%d " i
printfn ""

function1()
function2()

// A for...to loop that uses functions as the start and finish expressions.
let beginning x y = x - 2*y
let ending x y = x + 2*y

let function3 x y =
for i = (beginning x y) to (ending x y) do
printf "%d " i
printfn ""

function3 10 4


The output of the previous code is as follows.

1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18