fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun printFizzBuzz limit current = let fun printCurrent n = if n mod 3 = 0 andalso n mod 5 = 0 then print ("FizzBuzz" ^ "\n") else if n mod 3 = 0 then print ("Fizz" ^ "\n") else if n mod 5 = 0 then print ("Buzz" ^ "\n") else print (Int.toString n ^ "\n") in printCurrent current; if current < limit then printFizzBuzz limit (current + 1) else ignore () end val () = let val n = readInt () in printFizzBuzz n 1 end