// // K&R, 2nd edition, page 19 // // // Translated into ATS by Hongwei Xi (hwxi AT cs DOT bu DOT edu) // staload "libc/SATS/stdio.sats" (* #include <stdio.h> int main () { int c ; int nl ; while ((c = getchar()) != EOF) if (c == '\n') ++nl ; printf ("%d\n", nl) ; } /* end of [main] */ *) implement main () = let val nl = loop (0) where { fun loop (nl: int): int = let val c = getchar () in if c <> EOF then begin if c = int_of_char '\n' then loop (nl + 1) else loop (nl) end else begin nl // loop exits end // end of [if] end // end of [loop] } in printf ("%d\n", @(nl)) end // end of [main] (* ****** ****** *) (* end of [linecnt.dats] *)