Standard ML has a while loop defined which may be used in place of recursion or higher order functions, wherein one expression is repeated while a condition holds.
Recursion and higher order functions tend to be preferred, as while only makes sense with a mutable condition, and Standard ML tends to prefer immutability.
(* examples/while.sml *)