Basic question on looping

How do i print the number 1 unto 100 without using some higher library function ?
How do i do it in a loop ?
[This questions refers offcourse to mutable state ]

for i = 1 to 100 do
  print_endline (string_of_int i)



Does i has as type “ref int” ?
Can you print the type of i in the loop ?

i is just an int there. One hint that it’s not a ref is that you would have to do !i or i.contents to get the value out of a ref int (in string_of_int i in nojb’s examle). If you specifically wanted to see what it would be like with a mutable int, it might be something like:

let i = ref 0 in
while !i <= 100 do
  print_endline (string_of_int !i);
  incr i

(incr is a function for incrementing a mutable int, it could also be written i := !i + 1)

But it makes more sense to do what nojb mentioned, unless there’s some other context that requires a mutable int for some reason.


It is perhaps worth mentioning that ocaml implements tail call elimination, so if you are not going to use a for loop it would be more idiomatic in a functional language like ocaml to use recursive iteration instead of mutable state:

let () =
  let rec loop i =
    print_endline (string_of_int i) ;
    if i <= 100 then loop (i + 1) in
  loop 1