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