The program will run into an infinite loop, because in every execution of square-iter, the improve function is called again, since this is an applicative-ordered language