fun count file = let open TextIO val is = openIn file fun loop res = if endOfStream is then res else (inputLine is; loop (res+1)) in loop 0 before closeIn is end val files = List.filter (fn p => Path.ext p = SOME "sml" orelse Path.ext p = SOME "sig") (Mosml.listDir ".") val lines = List.foldl (op +) 0 (map count files)