(* a generic looping example *) (* note that F is a functional parameter *) fun loopIt(i:int,n:int,F) = if i = n then F(i) else let val dummy = F(i) val dummy2 = loopIt(i+1,n,F) in dummy2 (* any expression could be used *) end; fun printIt(i:int) = let val dummy = print( (Int.toString i)^"\n"); in dummy end; loopIt(1,10,printIt); SML output is as follows: - use "loopIt.sml"; [opening loopIt.sml] val loopIt = fn : int * int * (int -> 'a) -> 'a val printIt = fn : int -> unit 1 2 3 4 5 6 7 8 9 10 val it = () : unit val it = () : unit -