local
fun readAndReverse' [] = "" (* hvis argument er den tomme liste har input kun vaeret blanktegn *)
| readAndReverse' input = let val reversed = String.concat ( (* saml string list til en string *)
List.map (
(* tilfoej mellemrum efter hvert ord *)
(fn x => x ^ " ") o
(* saml char listerne igen *)
implode o
(* vend char listerne om *)
List.rev o
(* lav string til char list *)
explode)
input) in
(* fjern det sidste mellemrum *)
String.substring(reversed, 0, String.size(reversed) -1)
end
in
(* anvend med TextIO.stdIn som argument for at laese fra konsol *)
fun readAndReverse is = let val input = TextIO.inputLine(is) in
if input = "" (*orelse (Char.isSpace input)*) then (* for at undgaa exn Substring *)
""
else
(* string -> string list, del ved blanktegn *)
readAndReverse' (String.tokens Char.isSpace input)
end
end