Depending on if the 'print' statement is present, the program either loops forever or terminates rapidly. val x = 5.0 fun sqrtx y = let val y' = ((x / y + y) / 2.0) val () = print (Real.toString y ^ " ...\n") in if Real.== (y', y) then y else sqrtx y' end val () = print (Real.toString (sqrtx 2.0) ^ "\n")