// // K&R, 2nd edition, page 15 // // // Translated into ATS by Hongwei Xi (hwxi AT cs DOT bu DOT edu) // #define LOWER 0 #define UPPER 300 #define STEP 20 (* #define LOWER 0 #define UPPER 300 #define STEP 20 main () { int fahr; for (fahr = LOWER; fahr <= UPPER; fahr += STEP) { printf ("%3d %6.1f\n", fahr, (5.0/9.0) * (fahr - 32)) ; } // end of [for] } /* end of [main] */ *) implement main () = loop (LOWER) where { fun loop (fahr: int): void = if fahr <= UPPER then let val () = printf ("%3d %6.1f\n", @(fahr, (5.0/9.0) * double_of (fahr - 32))) in loop (fahr + STEP) end // end of [loop] } // end of [main] (* // here is a variant implement main () = let var fahr: int = LOWER in while (fahr <= UPPER) begin printf ("%3d %6.1f\n", @(fahr, (5.0/9.0) * double_of (fahr - 32))); fahr := fahr + STEP end // end of [while] end // end of [main] *) (* // here is another variant implement main () = let var fahr: int // uninitialized in for (fahr := LOWER; fahr <= UPPER; fahr := fahr + STEP) begin printf ("%3d %6.1f\n", @(fahr, (5.0/9.0) * double_of (fahr - 32))); end // end of [for] end // end of [main] *) (* ****** ****** *) (* end of [fahrenheit_celsius.dats] *)